# # $Id: GNUmakefile.os4,v 1.82 2005-10-20 07:19:15 obarthel Exp $ # # :ts=8 # # -*- mode: makefile; -*- ############################################################################## # You may have to tweak this for the native OS4 compiler SDK_INCLUDE = $(V)/include NET_INCLUDE = netinclude # These are for the cross compiler CC = ppc-amigaos-gcc AR = ppc-amigaos-ar -q RANLIB = ppc-amigaos-ranlib COPY = cp -a DELETE = rm -rf MAKEDIR = mkdir # The following are for the native OS4 compiler # CC = gcc # AR = ar -q # RANLIB = ranlib # COPY = copy # DELETE = delete all quiet # MAKEDIR = makedir MAKE = $(MAKE_COMMAND) -f GNUmakefile.os4 ############################################################################## ifeq (,$(TYPE)) LIBC_OBJS = libc_objs LIBUNIX_OBJS = libunix_objs LIBM_OBJS = libm_objs LIBNET_OBJS = libnet_objs LIBDEBUG_OBJS = libdebug_objs LIBAMIGA_OBJS = libamiga_objs LIBPROFILE_OBJS = libprofile_objs else LIBC_OBJS = $(TYPE)/libc_objs LIBUNIX_OBJS = $(TYPE)/libunix_objs LIBM_OBJS = $(TYPE)/libm_objs LIBNET_OBJS = $(TYPE)/libnet_objs LIBDEBUG_OBJS = $(TYPE)/libdebug_objs LIBAMIGA_OBJS = $(TYPE)/libamiga_objs LIBPROFILE_OBJS = $(TYPE)/libprofile_objs endif ############################################################################## # General build rules for all object files and the individual libraries %.o : %.c @echo "Compiling $<" @$(CC) -c $(CFLAGS) $< $(LIBC_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):c]" @$(CC) -o $(LIBC_OBJS)/$*.o -c $(CFLAGS) $< $(LIBUNIX_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):unix]" @$(CC) -o $(LIBUNIX_OBJS)/$*.o -c $(CFLAGS) -DUNIX_PATH_SEMANTICS $< $(LIBM_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):m]" @$(CC) -o $(LIBM_OBJS)/$*.o -c $(CFLAGS) $(FLOAT_TYPE) $< $(LIBNET_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):net]" @$(CC) -o $(LIBNET_OBJS)/$*.o -c $(CFLAGS) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT $< $(LIBDEBUG_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):debug]" @$(CC) -o $(LIBDEBUG_OBJS)/$*.o -c $(CFLAGS) $< $(LIBAMIGA_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):amiga]" @$(CC) -o $(LIBAMIGA_OBJS)/$*.o -c $(CFLAGS) $< $(LIBPROFILE_OBJS)/%.o : %.c @echo "Compiling $< [$(TYPE):profile]" @$(CC) -o $(LIBPROFILE_OBJS)/$*.o -c $(CFLAGS) $< $(LIBPROFILE_OBJS)/%.o : %.S @echo "Assembling $< [$(TYPE):profile]" @$(CC) -o $(LIBPROFILE_OBJS)/$*.o -Wa,-mregnames -c $(CFLAGS) $< ############################################################################## # Build options for the individual libraries ifeq (small_data,$(TYPE)) CODE_TYPE := -msdata=sysv -DSMALL_DATA FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT endif ifeq (large_data,$(TYPE)) CODE_TYPE := -msdata=data FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT endif ifeq (large_data_softfloat,$(TYPE)) CODE_TYPE := -msdata=data -msoft-float FLOAT_TYPE := endif ifeq (baserel,$(TYPE)) CODE_TYPE := -mbaserel -DBASEREL_DATA FLOAT_TYPE := -DPPC_FLOATING_POINT_SUPPORT endif ############################################################################## WARNINGS = \ -Wall -W -Wpointer-arith -Wsign-compare -Wmissing-prototypes \ -Wundef -Wbad-function-cast -Wmissing-declarations -Wunused # -Wconversion -Wshadow INCLUDES = -Iinclude -I. -I$(SDK_INCLUDE) OPTIONS = -D__THREAD_SAFE -DNDEBUG -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames -fno-common -std=gnu99 #OPTIONS = -DNDEBUG -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames -fno-common -std=gnu99 OPTIMIZE = -O3 #DEBUG = -ggdb CFLAGS = $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(CODE_TYPE) $(INCLUDES) ############################################################################## # All objects files which make up libc.a C_LIB = \ c.lib_rev.o \ ctype_isalnum.o \ ctype_isalpha.o \ ctype_isascii.o \ ctype_isblank.o \ ctype_iscntrl.o \ ctype_isdigit.o \ ctype_isgraph.o \ ctype_islower.o \ ctype_isprint.o \ ctype_ispunct.o \ ctype_isspace.o \ ctype_isupper.o \ ctype_isxdigit.o \ ctype_table.o \ ctype_tolower.o \ ctype_toupper.o \ dirent_closedir.o \ dirent_opendir.o \ dirent_readdir.o \ dirent_rewinddir.o \ errno_data.o \ fcntl_close.o \ fcntl_creat.o \ fcntl_fcntl.o \ fcntl_get_default_file.o \ fcntl_lock.o \ fcntl_lseek.o \ fcntl_open.o \ fcntl_read.o \ fcntl_write.o \ ftw_ftw.o \ ftw_nftw.o \ inttypes_imaxdiv.o \ inttypes_imaxabs.o \ inttypes_strtoimax.o \ inttypes_strtoumax.o \ libgen_basename.o \ libgen_dirname.o \ locale_init_exit.o \ locale_localeconv.o \ locale_open_locale.o \ locale_setlocale.o \ mount_convertinfo.o \ mount_fstatfs.o \ mount_statfs.o \ profile_profil.o \ signal_checkabort.o \ signal_data.o \ signal_kill.o \ signal_raise.o \ signal_sigaddset.o \ signal_sigblock.o \ signal_sigemptyset.o \ signal_sigmask.o \ signal_signal.o \ signal_sigprocmask.o \ signal_sigsetmask.o \ stat_chmod.o \ stat_convertfileinfo.o \ stat_fchmod.o \ stat_fstat.o \ stat_lstat.o \ stat_mkdir.o \ stat_rmdir.o \ stat_stat.o \ stat_umask.o \ stdio_asprintf.o \ stdio_clearerr.o \ stdio_dropiobreadbuffer.o \ stdio_duplicate_fd.o \ stdio_examine_fh.o \ stdio_fclose.o \ stdio_fdhookentry.o \ stdio_feof.o \ stdio_ferror.o \ stdio_fflush.o \ stdio_fgetc.o \ stdio_fgetpos.o \ stdio_fgets.o \ stdio_filliobreadbuffer.o \ stdio_findvacantfdentry.o \ stdio_findvacantiobentry.o \ stdio_flockfile.o \ stdio_flush.o \ stdio_flush_all_files.o \ stdio_flushiobwritebuffer.o \ stdio_fopen.o \ stdio_fprintf.o \ stdio_fputc.o \ stdio_fputs.o \ stdio_fread.o \ stdio_freopen.o \ stdio_fscanf.o \ stdio_fseek.o \ stdio_fseeko.o \ stdio_fsetpos.o \ stdio_ftell.o \ stdio_ftello.o \ stdio_ftrylockfile.o \ stdio_funlockfile.o \ stdio_fwrite.o \ stdio_getc.o \ stdio_getc_unlocked.o \ stdio_getchar.o \ stdio_getchar_unlocked.o \ stdio_gets.o \ stdio_get_file_descriptor.o \ stdio_growfdtable.o \ stdio_growiobtable.o \ stdio_grow_file.o \ stdio_initializefd.o \ stdio_initializeiob.o \ stdio_init_exit.o \ stdio_file_init.o \ stdio_iobhookentry.o \ stdio_lock.o \ stdio_locksemaphorename.o \ stdio_nostdio.o \ stdio_openiob.o \ stdio_parent_of_fh.o \ stdio_perror.o \ stdio_popen.o \ stdio_printf.o \ stdio_putc.o \ stdio_putc_unlocked.o \ stdio_putchar.o \ stdio_putchar_unlocked.o \ stdio_puts.o \ stdio_remove.o \ stdio_remove_fd_alias.o \ stdio_rename.o \ stdio_rewind.o \ stdio_scanf.o \ stdio_setbuf.o \ stdio_setvbuf.o \ stdio_snprintf.o \ stdio_sprintf.o \ stdio_sscanf.o \ stdio_sscanf_hook_entry.o \ stdio_tmpfile.o \ stdio_tmpnam.o \ stdio_translateioerror.o \ stdio_ungetc.o \ stdio_unlockfile.o \ stdio_vasprintf.o \ stdio_vasprintf_hook_entry.o \ stdio_vfprintf.o \ stdio_vfscanf.o \ stdio_vsscanf.o \ stdio_vscanf.o \ stdio_vprintf.o \ stdio_vsnprintf.o \ stdio_vsnprintf_hook_entry.o \ stdio_vsprintf.o \ stdio_vsprintf_hook_entry.o \ stdlib_abort.o \ stdlib_abs.o \ stdlib_alloca.o \ stdlib_assertion_failure.o \ stdlib_atexit.o \ stdlib_atoi.o \ stdlib_atol.o \ stdlib_atoll.o \ stdlib_bsearch.o \ stdlib_calloc.o \ stdlib_checkdetach.o \ stdlib_constructor.o \ stdlib_constructor_begin.o \ stdlib_default_pool_size.o \ stdlib_default_puddle_size.o \ stdlib_destructor.o \ stdlib_detach.o \ stdlib_disablerequesters.o \ stdlib_div.o \ stdlib_divsi3.o \ stdlib_divsi4.o \ stdlib_dosbase.o \ stdlib_exit.o \ stdlib_free.o \ stdlib_getdefstacksize.o \ stdlib_getenv.o \ stdlib_getsp.o \ stdlib_get_errno.o \ stdlib_isresident.o \ stdlib_labs.o \ stdlib_llabs.o \ stdlib_ldiv.o \ stdlib_lldiv.o \ stdlib_lib_main.o \ stdlib_lib_startup.o \ stdlib_machine_test.o \ stdlib_main.o \ stdlib_malloc.o \ stdlib_math.o \ stdlib_mkdtemp.o \ stdlib_mkstemp.o \ stdlib_mktemp.o \ stdlib_modsi3.o \ stdlib_mulsi3.o \ stdlib_never_free.o \ stdlib_osliberror.o \ stdlib_oslibversion.o \ stdlib_priority.o \ stdlib_process_name.o \ stdlib_program_name.o \ stdlib_putenv.o \ stdlib_qsort.o \ stdlib_rand.o \ stdlib_rand_r.o \ stdlib_realloc.o \ stdlib_red_black.o \ stdlib_semaphore.o \ stdlib_setenv.o \ stdlib_setjmp.o \ stdlib_set_errno.o \ stdlib_set_process_window.o \ stdlib_shell_escape.o \ stdlib_showerror.o \ stdlib_srand.o \ stdlib_stackargbytes.o \ stdlib_stackcheck.o \ stdlib_stackoverflow.o \ stdlib_stacksafezone.o \ stdlib_stacksize.o \ stdlib_stack_usage.o \ stdlib_arg.o \ stdlib_stdio_window_spec.o \ stdlib_strtol.o \ stdlib_strtoll.o \ stdlib_strtoul.o \ stdlib_strtoull.o \ stdlib_swapstack.o \ stdlib_sysbase.o \ stdlib_system.o \ stdlib_termination_message.o \ stdlib_threshold.o \ stdlib_utilitybase.o \ stdlib_udivsi3.o \ stdlib_udivsi4.o \ stdlib_umodsi3.o \ stdlib_unsetenv.o \ strings_ffs.o \ strings_strcasecmp.o \ strings_strncasecmp.o \ string_bcmp.o \ string_bcopy.o \ string_bzero.o \ string_index.o \ string_memchr.o \ string_memcmp.o \ string_memcpy.o \ string_memmove.o \ string_memset.o \ string_rindex.o \ string_strcat.o \ string_strchr.o \ string_strcmp.o \ string_strcoll.o \ string_strcpy.o \ string_strcspn.o \ string_strdup.o \ string_strerror.o \ string_strlcat.o \ string_strlcpy.o \ string_strlen.o \ string_strncat.o \ string_strncmp.o \ string_strncpy.o \ string_strpbrk.o \ string_strrchr.o \ string_strspn.o \ string_strstr.o \ string_strtok.o \ string_strtok_r.o \ string_strxfrm.o \ time_asctime.o \ time_asctime_r.o \ time_clock.o \ time_converttime.o \ time_convert_datestamp.o \ time_convert_time.o \ time_ctime.o \ time_ctime_r.o \ time_data.o \ time_days_per_date.o \ time_gettimeofday.o \ time_gmtime.o \ time_gmtime_r.o \ time_localtime.o \ time_localtime_r.o \ time_mktime.o \ time_numbertostring.o \ time_strftime.o \ time_time.o \ time_weekday.o \ uio_readv.o \ uio_writev.o \ unistd_access.o \ unistd_chdir.o \ unistd_chdir_exit.o \ unistd_chown.o \ unistd_currentpathname.o \ unistd_dup.o \ unistd_dup2.o \ unistd_fchown.o \ unistd_fdatasync.o \ unistd_fdopen.o \ unistd_fileno.o \ unistd_fsync.o \ unistd_ftruncate.o \ unistd_getcwd.o \ unistd_getopt.o \ unistd_getpid.o \ unistd_init_exit.o \ unistd_isatty.o \ unistd_lchown.o \ unistd_link.o \ unistd_readlink.o \ unistd_realpath.o \ unistd_sleep.o \ unistd_symlink.o \ unistd_sync_fd.o \ unistd_timer.o \ unistd_time_delay.o \ unistd_truncate.o \ unistd_unlink.o \ unistd_usleep.o \ utime_utime.o \ utsname_uname.o # All objects files which make up libunix.a UNIX_LIB = \ unix.lib_rev.o \ dirent_closedir.o \ dirent_rewinddir.o \ dirent_opendir.o \ dirent_readdir.o \ fcntl_creat.o \ fcntl_fcntl.o \ fcntl_open.o \ fcntl_get_default_file.o \ getopt_getopt_long.o \ mount_convertinfo.o \ mount_statfs.o \ stat_chmod.o \ stat_fstat.o \ stat_lstat.o \ stat_mkdir.o \ stat_rmdir.o \ stat_stat.o \ stdio_ctermid.o \ stdio_fdhookentry.o \ stdio_fflush.o \ stdio_fopen.o \ stdio_file_init.o \ stdio_init_exit.o \ stdio_locksemaphorename.o \ stdio_openiob.o \ stdio_popen.o \ stdio_record_locking.o \ stdio_remove.o \ stdio_rename.o \ stdlib_arg.o \ stdlib_main.o \ stdlib_mkdtemp.o \ stdlib_mkstemp.o \ stdlib_mktemp.o \ stdlib_system.o \ termios_cfgetispeed.o \ termios_cfgetospeed.o \ termios_cfmakeraw.o \ termios_cfsetispeed.o \ termios_cfsetospeed.o \ termios_console_fdhookentry.o \ termios_openserial.o \ termios_tcdrain.o \ termios_tcflow.o \ termios_tcflush.o \ termios_tcgetattr.o \ termios_tcsendbreak.o \ termios_tcsetattr.o \ uio_readv.o \ uio_writev.o \ unistd_access.o \ unistd_chdir.o \ unistd_chdir_exit.o \ unistd_chown.o \ unistd_getcwd.o \ unistd_lchown.o \ unistd_link.o \ unistd_readlink.o \ unistd_realpath.o \ unistd_restorepathname.o \ unistd_setcurrentpath.o \ unistd_strip_double_slash.o \ unistd_translatea2u.o \ unistd_translaterel.o \ unistd_translateu2a.o \ unistd_truncate.o \ unistd_ttyname.o \ unistd_ttyname_r.o \ unistd_unix_path_semantics.o \ unistd_unlink.o \ unistd_wildcard_expand.o \ utime_utime.o # All objects files which make up libm.a MATH_LIB = \ complex_carg.o \ complex_cargf.o \ complex_cargl.o \ complex_cimag.o \ complex_cimagf.o \ complex_cimagl.o \ complex_conj.o \ complex_conjf.o \ complex_conjl.o \ complex_creal.o \ complex_crealf.o \ complex_creall.o \ math_acos.o \ math_acosf.o \ math_acosh.o \ math_acoshf.o \ math_asin.o \ math_asinf.o \ math_asinh.o \ math_asinhf.o \ math_atan.o \ math_atan2.o \ math_atan2f.o \ math_atanf.o \ math_atanh.o \ math_atanhf.o \ math_cbrt.o \ math_cbrtf.o \ math_ceil.o \ math_ceilf.o \ math_copysign.o \ math_copysignf.o \ math_cos.o \ math_cosf.o \ math_cosh.o \ math_coshf.o \ math_erf.o \ math_erfc.o \ math_erfcf.o \ math_erff.o \ math_exp.o \ math_exp2.o \ math_exp2f.o \ math_expf.o \ math_expm1.o \ math_expm1f.o \ math_fabs.o \ math_fabsf.o \ math_floor.o \ math_floorf.o \ math_fma.o \ math_fmaf.o \ math_fmod.o \ math_fmodf.o \ math_fpclassify.o \ math_frexp.o \ math_frexpf.o \ math_huge_val.o \ math_huge_valf.o \ math_hypot.o \ math_hypotf.o \ math_ilogb.o \ math_ilogbf.o \ math_inf.o \ math_inff.o \ math_init_exit.o \ math_isfinite.o \ math_isunordered.o \ math_kernel_cos.o \ math_kernel_cosf.o \ math_kernel_expm1.o \ math_kernel_rem_pio2.o \ math_kernel_scalbn.o \ math_kernel_sin.o \ math_kernel_sinf.o \ math_kernel_tan.o \ math_kernel_tanf.o \ math_ldexp.o \ math_ldexpf.o \ math_lgamma.o \ math_lgammaf.o \ math_log.o \ math_log10.o \ math_log10f.o \ math_log1p.o \ math_log1pf.o \ math_log2.o \ math_log2f.o \ math_logb.o \ math_logbf.o \ math_logf.o \ math_lround.o \ math_lroundf.o \ math_modf.o \ math_modff.o \ math_nan.o \ math_nanf.o \ math_nearbyint.o \ math_nearbyintf.o \ math_nextafter.o \ math_nextafterf.o \ math_pow.o \ math_powf.o \ math_remainder.o \ math_remainderf.o \ math_remquo.o \ math_remquof.o \ math_rem_pio2f.o \ math_rint.o \ math_rintf.o \ math_round.o \ math_roundf.o \ math_scalbn.o \ math_scalbnf.o \ math_signbit.o \ math_sin.o \ math_sinf.o \ math_sinh.o \ math_sinhf.o \ math_sqrt.o \ math_sqrtf.o \ math_tan.o \ math_tanf.o \ math_tanh.o \ math_tanhf.o \ math_tgamma.o \ math_tgammaf.o \ math_trunc.o \ math_truncf.o \ stdio_asprintf.o \ stdio_flush.o \ stdio_flush_all_files.o \ stdio_fprintf.o \ stdio_fscanf.o \ stdio_printf.o \ stdio_scanf.o \ stdio_snprintf.o \ stdio_sprintf.o \ stdio_sscanf.o \ stdio_vasprintf.o \ stdio_vfprintf.o \ stdio_vfscanf.o \ stdio_vsscanf.o \ stdio_vscanf.o \ stdio_vprintf.o \ stdio_vsnprintf.o \ stdio_vsprintf.o \ stdlib_atof.o \ stdlib_strtod.o \ stdlib_strtof.o \ time_difftime.o # All objects files which make up libnet.a NET_LIB = \ net.lib_rev.o \ socket_accept.o \ socket_bind.o \ socket_check_daemon.o \ socket_connect.o \ socket_gethostbyaddr.o \ socket_gethostbyname.o \ socket_gethostid.o \ socket_gethostname.o \ socket_getnetbyaddr.o \ socket_getnetbyname.o \ socket_getpeername.o \ socket_getprotobyname.o \ socket_getprotobynumber.o \ socket_getservbyname.o \ socket_getservbyport.o \ socket_getsockname.o \ socket_getsockopt.o \ socket_get_descriptor.o \ socket_inet_addr.o \ socket_inet_aton.o \ socket_inet_lnaof.o \ socket_inet_makeaddr.o \ socket_inet_netof.o \ socket_inet_network.o \ socket_inet_ntoa.o \ socket_init_exit.o \ socket_ioctl.o \ socket_isdaemon.o \ socket_listen.o \ socket_obtain_daemon.o \ socket_recv.o \ socket_recvfrom.o \ socket_recvmsg.o \ socket_select.o \ socket_send.o \ socket_sendmsg.o \ socket_sendto.o \ socket_setsockopt.o \ socket_shutdown.o \ socket_socket.o \ socket_hook_entry.o \ socket_hstrerror.o \ socket_get_h_errno.o \ socket_set_h_errno.o \ stat_umask.o \ usergroup_crypt.o \ usergroup_data.o \ usergroup_endgrent.o \ usergroup_endpwent.o \ usergroup_getegid.o \ usergroup_geteuid.o \ usergroup_getgid.o \ usergroup_getgrent.o \ usergroup_getgrgid.o \ usergroup_getgrnam.o \ usergroup_getgroups.o \ usergroup_getpass.o \ usergroup_getpwent.o \ usergroup_getpwnam.o \ usergroup_getpwuid.o \ usergroup_getuid.o \ usergroup_initgroups.o \ usergroup_init_exit.o \ usergroup_rootmode.o \ usergroup_setegid.o \ usergroup_seteuid.o \ usergroup_setgid.o \ usergroup_setgrent.o \ usergroup_setgroups.o \ usergroup_setpwent.o \ usergroup_setregid.o \ usergroup_setreuid.o \ usergroup_setsid.o \ usergroup_setuid.o \ utsname_uname.o # All objects files which make up libdebug.a DEBUG_LIB = \ debug.lib_rev.o \ debug.o \ debug_cmpstrexec.o \ debug_kcmpstr.o \ debug_kdofmt.o \ debug_kgetc.o \ debug_kgetch1.o \ debug_kgetch2.o \ debug_kgetchar1.o \ debug_kgetchar2.o \ debug_kgetnum1.o \ debug_kgetnum2.o \ debug_kmaygetch.o \ debug_kmaygetchar.o \ debug_kprintf1.o \ debug_kprintf2.o \ debug_kputc.o \ debug_kputch1.o \ debug_kputch2.o \ debug_kputchar1.o \ debug_kputchar2.o \ debug_kputfmt.o \ debug_kputs1.o \ debug_kputs2.o \ debug_kputstr1.o \ debug_kputstr2.o \ debug_kvprintf1.o \ debug_kvprintf2.o \ debug_level.o # All objects files which make up libamiga.a AMIGA_LIB = \ amiga.lib_rev.o \ amiga_acrypt.o \ amiga_addtof.o \ amiga_argarraydone.o \ amiga_argarrayinit.o \ amiga_argint.o \ amiga_argstring.o \ amiga_beginio.o \ amiga_callhooka.o \ amiga_coercemethod.o \ amiga_createextio.o \ amiga_createport.o \ amiga_createstdio.o \ amiga_createtask.o \ amiga_deleteextio.o \ amiga_deleteport.o \ amiga_deletestdio.o \ amiga_deletetask.o \ amiga_domethod.o \ amiga_dosupermethod.o \ amiga_dotimer.o \ amiga_fastrand.o \ amiga_freeievents.o \ amiga_hotkey.o \ amiga_invertstring.o \ amiga_newlist.o \ amiga_rangerand.o \ amiga_remtof.o \ amiga_rexxvars.o \ amiga_setsuperattrs.o \ amiga_timedelay.o \ amiga_waitbeam.o MEMDEBUG_LIB = \ stdio_vasprintf_debug.o \ stdio_vasprintf_hook_entry_debug.o \ stdlib_alloca_debug.o \ stdlib_calloc_debug.o \ stdlib_free_debug.o \ stdlib_malloc_debug.o \ string_strdup_debug.o \ unistd_getcwd_debug.o PROFILE_LIB = \ profile__mcount.o \ profile_gmon.o \ profile_mcount.o ############################################################################## # The libraries to be built, prefixed by the respective path names LIBS := \ $(LIBC_OBJS)/libc.a \ $(LIBUNIX_OBJS)/libunix.a \ $(LIBDEBUG_OBJS)/libdebug.a \ $(LIBAMIGA_OBJS)/libamiga.a \ $(LIBM_OBJS)/libm.a \ $(LIBNET_OBJS)/libnet.a \ $(LIBPROFILE_OBJS)/libprofile.a ############################################################################## # The startup object files to be built STARTUPS := crt0.o crtbegin.o crtend.o ############################################################################## # This is the first target: it creates the necessary directories, then proceeds # to build the startup object files and finally the libraries all: \ lib \ lib/soft-float \ lib/small-data \ lib/baserel \ small_data \ large_data \ large_data_softfloat \ baserel \ lib/crt0.o \ lib/crtbegin.o \ lib/crtend.o \ lib/libm.a \ lib/small-data/crt0.o \ lib/small-data/crtbegin.o \ lib/small-data/crtend.o \ lib/small-data/libm.a \ lib/soft-float/libm.a \ lib/baserel/crt0.o \ lib/baserel/crtbegin.o \ lib/baserel/crtend.o \ lib/baserel/libm.a ############################################################################## # Delete all object files and libraries clean: -$(DELETE) $(STARTUPS) lib small_data large_data large_data_softfloat baserel ############################################################################## # Update the version numbers bound to the individual libraries version: cp c.lib_rev.rev amiga.lib_rev.rev cp c.lib_rev.rev debug.lib_rev.rev cp c.lib_rev.rev m.lib_rev.rev cp c.lib_rev.rev m881.lib_rev.rev cp c.lib_rev.rev net.lib_rev.rev cp c.lib_rev.rev stack.lib_rev.rev cp c.lib_rev.rev unix.lib_rev.rev cp c.lib_rev.rev profile.lib_rev.rev bumprev 1 amiga.lib bumprev 1 c.lib bumprev 1 debug.lib bumprev 1 m.lib bumprev 1 m881.lib bumprev 1 net.lib bumprev 1 stack.lib bumprev 1 unix.lib bumprev 1 profile.lib ############################################################################## # Tag all files with a certain version number cvs-tag: cvs -q tag V1_`cat c.lib_rev.rev` ############################################################################## # This target first creates a directory to store the object files in, then # proceeds to build the libraries from the code. It is invoked by the # individual library build targets below. all_libraries: $(TYPE) $(LIBS) ############################################################################## # These create the required subdirectories to store object files and # libraries in lib: -$(MAKEDIR) $@ lib/small-data: lib -$(MAKEDIR) $@ lib/soft-float: lib -$(MAKEDIR) $@ lib/baserel: lib -$(MAKEDIR) $@ small_data: -$(MAKEDIR) $@ large_data: -$(MAKEDIR) $@ large_data_softfloat: -$(MAKEDIR) $@ baserel: -$(MAKEDIR) $@ ############################################################################## # Dependencies for libm.a (large data variant with hardware floating point code # support): this actually ends up building all the libraries rather than just # libm.a lib/libm.a: large_data large_data/libm.a large_data/libm.a: $(MAKE) TYPE=large_data all_libraries $(COPY) $(foreach file,$(LIBS),large_data/$(file)) lib ############################################################################## # Dependencies for libm.a (large data variant with software floating point code # support): this actually ends up building all the libraries rather than just # libm.a lib/soft-float/libm.a: large_data_softfloat large_data_softfloat/libm.a large_data_softfloat/libm.a: $(MAKE) TYPE=large_data_softfloat all_libraries $(COPY) $(foreach file,$(LIBS),large_data_softfloat/$(file)) lib/soft-float ############################################################################## # Dependencies for libm.a (small data variant): this actually ends up building all # the libraries rather than just libm.a lib/small-data/libm.a: small_data small_data/libm.a small_data/libm.a: $(MAKE) TYPE=small_data all_libraries $(COPY) $(foreach file,$(LIBS),small_data/$(file)) lib/small-data ############################################################################## # Dependencies for libm.a (baserel variant) lib/baserel/libm.a: baserel baserel/libm.a baserel/libm.a: $(MAKE) TYPE=baserel all_libraries $(COPY) $(foreach file,$(LIBS),baserel/$(file)) lib/baserel ############################################################################## # Rules to build and move the startup code lib/crt0.o : lib crt0.o $(COPY) crt0.o lib lib/crtbegin.o : lib crtbegin.o $(COPY) crtbegin.o lib lib/crtend.o : lib crtend.o $(COPY) crtend.o lib lib/small-data/crt0.o : lib small_data/crt0.o $(COPY) small_data/crt0.o lib/small-data lib/small-data/crtbegin.o : lib small_data/crtbegin.o $(COPY) small_data/crtbegin.o lib/small-data lib/small-data/crtend.o : lib small_data/crtend.o $(COPY) small_data/crtend.o lib/small-data lib/baserel/crt0.o : lib baserel/crt0.o $(COPY) baserel/crt0.o lib/baserel lib/baserel/crtbegin.o : lib baserel/crtbegin.o $(COPY) baserel/crtbegin.o lib/baserel lib/baserel/crtend.o : lib baserel/crtend.o $(COPY) baserel/crtend.o lib/baserel ############################################################################## # Individual dependencies which tell make to build the object files from # 'C' source files rather than the assembly language source files of the # same name (e.g. stdlib_getsp.c instead of stdlib_getsp.asm). $(LIBC_OBJS)/stdlib_getsp.o : stdlib_getsp.c $(LIBC_OBJS)/stdlib_swapstack.o : stdlib_swapstack.c $(LIBC_OBJS)/stdlib_setjmp.o : stdlib_setjmp.c ############################################################################## # Build rules for version information that goes into each library $(LIBC_OBJS)/c.lib_rev.o : c.lib_rev.c c.lib_rev.h $(LIBUNIX_OBJS)/unix.lib_rev.o : unix.lib_rev.c unix.lib_rev.h $(LIBM_OBJS)/m.lib_rev.o : m.lib_rev.c m.lib_rev.h $(LIBNET_OBJS)/net.lib_rev.o : net.lib_rev.c net.lib_rev.h $(LIBDEBUG_OBJS)/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h $(LIBAMIGA_OBJS)/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h $(LIBPROFILE_OBJS)/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h ############################################################################## # Build rules for the debug version of the library which has special # memory allocation debugging code, controlled by the contents of # the stdlib_memory.h file. $(LIBC_OBJS)/stdlib_alloca.o : stdlib_alloca.c stdlib_memory.h $(LIBC_OBJS)/stdlib_calloc.o : stdlib_calloc.c stdlib_memory.h $(LIBC_OBJS)/stdlib_free.o : stdlib_free.c stdlib_memory.h $(LIBC_OBJS)/stdlib_malloc.o : stdlib_malloc.c stdlib_memory.h $(LIBC_OBJS)/stdlib_realloc.o : stdlib_realloc.c stdlib_memory.h $(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_memory.h ############################################################################## # Peculiar build rules for the debug versions of memory allocation functions, # or at least those which use memory allocation functionality. $(LIBC_OBJS)/stdlib_alloca_debug.o : stdlib_alloca.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdlib_alloca_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_alloca.c $(LIBC_OBJS)/stdlib_calloc_debug.o : stdlib_calloc.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdlib_calloc_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_calloc.c $(LIBC_OBJS)/stdlib_free_debug.o : stdlib_free.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdlib_free_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_free.c $(LIBC_OBJS)/stdlib_malloc_debug.o : stdlib_malloc.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdlib_malloc_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_malloc.c $(LIBC_OBJS)/stdlib_realloc_debug.o : stdlib_realloc.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdlib_realloc_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdlib_realloc.c $(LIBC_OBJS)/stdio_vasprintf_hook_entry_debug.o : stdio_vasprintf_hook_entry.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdio_vasprintf_hook_entry_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdio_vasprintf_hook_entry.c $(LIBC_OBJS)/stdio_vasprintf_debug.o : stdio_vasprintf.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/stdio_vasprintf_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG stdio_vasprintf.c $(LIBM_OBJS)/stdio_vasprintf_debug.o : stdio_vasprintf.c @echo "Compiling $< [$(TYPE):m debug]" @$(CC) -o $(LIBM_OBJS)/stdio_vasprintf_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG $(FLOAT_TYPE) stdio_vasprintf.c $(LIBC_OBJS)/string_strdup_debug.o : string_strdup.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/string_strdup_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG string_strdup.c $(LIBC_OBJS)/unistd_getcwd_debug.o : unistd_getcwd.c @echo "Compiling $< [$(TYPE):c debug]" @$(CC) -o $(LIBC_OBJS)/unistd_getcwd_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG unistd_getcwd.c $(LIBUNIX_OBJS)/unistd_getcwd_debug.o : unistd_getcwd.c @echo "Compiling $< [$(TYPE):unix debug]" @$(CC) -o $(LIBUNIX_OBJS)/unistd_getcwd_debug.o -c $(CFLAGS) -D__USE_MEM_TREES -D__MEM_DEBUG -DUNIX_PATH_SEMANTICS unistd_getcwd.c ############################################################################## # Individual build rules for libc.a $(LIBC_OBJS) : $(MAKEDIR) $@ $(LIBC_OBJS)/libc.a : $(LIBC_OBJS) $(foreach file,$(C_LIB),$(LIBC_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(C_LIB),$(LIBC_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libunix.a $(LIBUNIX_OBJS) : $(MAKEDIR) $@ $(LIBUNIX_OBJS)/libunix.a : $(LIBUNIX_OBJS) $(foreach file,$(UNIX_LIB),$(LIBUNIX_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(UNIX_LIB),$(LIBUNIX_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libm.a $(LIBM_OBJS) : $(MAKEDIR) $@ $(LIBM_OBJS)/libm.a : $(LIBM_OBJS) $(foreach file,$(MATH_LIB),$(LIBM_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(MATH_LIB),$(LIBM_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libnet.a $(LIBNET_OBJS) : $(MAKEDIR) $@ $(LIBNET_OBJS)/libnet.a : $(LIBNET_OBJS) $(foreach file,$(NET_LIB),$(LIBNET_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(NET_LIB),$(LIBNET_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libdebug.a $(LIBDEBUG_OBJS) : $(MAKEDIR) $@ $(LIBDEBUG_OBJS)/libdebug.a : $(LIBDEBUG_OBJS) $(foreach file,$(DEBUG_LIB),$(LIBDEBUG_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(DEBUG_LIB),$(LIBDEBUG_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libamiga.a $(LIBAMIGA_OBJS) : $(MAKEDIR) $@ $(LIBAMIGA_OBJS)/libamiga.a : $(LIBAMIGA_OBJS) $(foreach file,$(AMIGA_LIB),$(LIBAMIGA_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(AMIGA_LIB),$(LIBAMIGA_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for libprofile.a $(LIBPROFILE_OBJS) : $(MAKEDIR) $@ $(LIBPROFILE_OBJS)/libprofile.a : $(LIBPROFILE_OBJS) $(foreach file,$(PROFILE_LIB),$(LIBPROFILE_OBJS)/$(file)) -$(DELETE) $@ @$(AR) $@ $(foreach file,$(PROFILE_LIB),$(LIBPROFILE_OBJS)/$(file)) $(RANLIB) $@ ############################################################################## # Individual build rules for the startup code. crt0.o : crt0.S @echo "Assembling $<" @$(CC) -Wa,-mregnames -o crt0.o -c crt0.S small_data/crt0.o : crt0.S @echo "Assembling $<" @$(CC) -DSMALL_DATA -Wa,-mregnames -o small_data/crt0.o -c crt0.S small_data/crtbegin.o : crtbegin.c @echo "Assembling $<" @$(CC) -o small_data/crtbegin.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtbegin.c small_data/crtend.o : crtend.c @echo "Assembling $<" @$(CC) -o small_data/crtend.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -msdata=sysv -DSMALL_DATA crtend.c baserel/crt0.o : crt0.S @echo "Assembling $<" @$(CC) -Wa,-mregnames -o baserel/crt0.o -mbaserel -DBASEREL_DATA -c crt0.S baserel/crtbegin.o : crtbegin.c @echo "Assembling $<" @$(CC) -o baserel/crtbegin.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -mbaserel -DBASEREL_DATA crtbegin.c baserel/crtend.o : crtend.c @echo "Assembling $<" @$(CC) -o baserel/crtend.o -c $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(OPTIONS) $(INCLUDES) -mbaserel -DBASEREL_DATA crtend.c