APE=/sys/src/ape <$APE/config LIB=/$objtype/lib/ape/libap.a EXTRAOBJS=`{extraobjs} STDIO=S__IO_getc.$O S__IO_putc.$O S__dtoa.$O S__fconv.$O S_clearerr.$O\ S_fclose.$O S_feof.$O S_ferror.$O S_fflush.$O S_fgetc.$O \ S_fgetpos.$O S_fgets.$O S_fopen.$O S_fprintf.$O S_fputc.$O\ S_fputs.$O S_fread.$O S_freopen.$O S_fscanf.$O S_fseek.$O\ S_fsetpos.$O S_ftell.$O S_ftoa.$O S_fwrite.$O S_getc.$O S_getchar.$O\ S_gets.$O S_perror.$O S_printf.$O S_putc.$O S_putchar.$O S_puts.$O\ S_remove.$O 9_rename.$O S_rewind.$O S_scanf.$O\ S_sclose.$O S_setbuf.$O S_setvbuf.$O S_sopenr.$O S_sopenw.$O\ S_sprintf.$O S_sscanf.$O S_stdio.$O S_strerror.$O S_strtod.$O\ 9_tmpfile.$O S_tmpnam.$O S_ungetc.$O S_vfprintf.$O S_vfscanf.$O\ S_vprintf.$O S_vsprintf.$O S_exit.$O S_fileno.$O S_pow10.$O S_fdopen.$O MATH= M_asin.$O M_atan.$O M_atan2.$O M_erf.$O M_exp.$O M_fabs.$O\ M_floor.$O M_fmod.$O M_gamma.$O M_hypot.$O M_j0.$O M_j1.$O\ M_jn.$O M_log.$O M_pow.$O M_sin.$O M_sinh.$O 9_sqrt.$O M_tan.$O\ M_tanh.$O 9_frexp.$O 9_nan.$O # machine specific string/mem stuff from extraobjs: # strcat strchr strcmp strcpy strlen strncmp strrchr # memchr memcmp memcpy memmove memset STRING=G_strcoll.$O G_strcspn.$O G_strncat.$O G_strncpy.$O G_strpbrk.$O\ G_strspn.$O G_strstr.$O G_strtok.$O G_strxfrm.$O\ G_itoa.$O G_itol.$O GEN=9_malloc.$O 9_brk.$O G_ctype.$O G_strtol.$O G_strtoul.$O\ G_atoi.$O G_atol.$O G_atof.$O 9_system.$O 9_ctime.$O G_div.$O\ G_ldiv.$O 9__exit.$O G_toupper.$O G_isalnum.$O G_abs.$O G__assert.$O\ G_rand.$O G_qsort.$O G_bsearch.$O G_clock.$O G_difftime.$O\ G_mktime.$O G_mbwc.$O G_strftime.$O 9_raise.$O POSIX= 9_access.$O 9_alarm.$O 9_cfgetospeed.$O 9_chdir.$O\ 9_chmod.$O 9_chown.$O 9_close.$O\ 9_creat.$O 9_ctermid.$O 9_cuserid.$O 9_dirtostat.$O 9_dup.$O\ 9_execl.$O 9_execle.$O 9_execlp.$O 9_execv.$O 9_execve.$O\ 9_execvp.$O 9_fcntl.$O 9_fork.$O 9_fstat.$O 9_fsync.$O 9_ftruncate.$O 9_getcwd.$O\ G_getenv.$O 9_getgid.$O 9_getgrgid.$O 9_getgrnam.$O 9_getgroups.$O 9_getlogin.$O\ 9_getpid.$O 9_getpgrp.$O 9_getppid.$O 9_getpwnam.$O 9_getpwuid.$O\ 9_getuid.$O 9_isatty.$O 9_kill.$O 9_link.$O P_locale.$O 9_lseek.$O\ 9_mkdir.$O P_mkfifo.$O 9_open.$O 9_opendir.$O P_pathconf.$O\ 9_pause.$O 9_pipe.$O 9_read.$O 9_rmdir.$O 9_setgid.$O\ 9_setjmp.$O 9_setpgid.$O 9_setsid.$O 9_setuid.$O P_sigset.$O\ 9_signal.$O 9_sigprocmask.$O 9_sigpending.$O\ 9_sigsuspend.$O 9_sleep.$O 9_stat.$O P_sysconf.$O 9_tcgetattr.$O\ 9_time.$O 9_times.$O 9_ttyname.$O P_tzset.$O 9_uname.$O\ 9_umask.$O 9_unlink.$O 9_utime.$O 9_wait.$O 9_write.$O\ G_calloc.$O S_abort.$O $EXTRAOBJS EXTRA=9__envsetup.$O 9__buf.$O 9__dirconv.$O 9__errno.$O 9__fcall.$O\ 9__fdinfo.$O 9__getpw.$O 9__nap.$O \ 9_notetramp.$O 9_profile.$O 9_lock.$O 9_tas.$O\ 9__ALARM.$O 9__BIND.$O 9__BRK_.$O 9__CHDIR.$O\ 9__CLOSE.$O 9__CREATE.$O 9__DUP.$O 9__ERRSTR.$O\ 9__EXEC.$O 9__EXITS.$O 9__FD2PATH.$O 9__FSESSION.$O 9__FSTAT.$O 9__FWSTAT.$O\ 9__MOUNT.$O 9__NOTED.$O 9__NOTIFY.$O 9__OPEN.$O 9__OSEEK.$O\ 9__PIPE.$O 9__READ.$O 9__REMOVE.$O 9__RENDEZVOUS.$O\ 9__RFORK.$O 9__SEEK.$O 9__SEGATTACH.$O 9__SEGBRK.$O\ 9__SEGDETACH.$O 9__SEGFLUSH.$O 9__SEGFREE.$O\ 9__SLEEP.$O 9__STAT.$O 9__UNMOUNT.$O 9__WAIT.$O\ 9__WRITE.$O 9__WSTAT.$O 9_main9.$O 9_main9p.$O\ # toupper has tolower # isalnum has isalpha, iscntrl, isdigit, isgraph, islower, isprint, # ispunct, isspace, isupper, isxdigit # ctime has localtime, gmtime, asctime # opendir has closedir, readdir, rewinddir # _envsetup has environ, errno # getuid has geteuid # getgid has getegid # sigemptyset has sigfillset, sigaddset, sigdelset, sigismember # abs has labs # locale has setlocale, localeconv # rand has srand OFILES=$STDIO $MATH $STRING $GEN $POSIX $EXTRA OBJ=${OFILES:%.$O=$LIB(%.$O)} CFLAGS=-c -D_POSIX_SOURCE -D_PLAN9_SOURCE -D_BSD_EXTENSION AFLAGS= none:Q: echo usage: mk entry, all, clean, install, entry.all, installall, nuke all:V: $LIB $LIB:Q: $OBJ names=`{membername $newprereq} $AR rv $LIB $names && rm -f $names $LIB(%.$O):N: %.$O &:NQ: &.$O ar vu $LIB $stem.$O rm -f $stem.$O %.$O: %.c $CC $CFLAGS $prereq %.$O: %.s $AS $AFLAGS $prereq install:V: $LIB installall:V: for(objtype in $CPUS) { mk install } %.all:V: for(objtype in $CPUS) mk $stem clean:V: rm -f *.[$OS] [$OS].out nuke:V: clean rm -f $LIB S_%.$O: stdio/%.c $CC $CFLAGS $prereq && mv $stem.$O $target M_%.$O: math/%.c $CC $CFLAGS $prereq && mv $stem.$O $target G_%.$O: gen/%.c $CC $CFLAGS $prereq && mv $stem.$O $target P_%.$O: posix/%.c $CC $CFLAGS $prereq && mv $stem.$O $target 9_%.$O: plan9/%.c $CC $CFLAGS $prereq && mv $stem.$O $target 9_%.$O: $objtype/%.s $AS $AFLAGS -o $target $prereq 9_%.$O: $objtype/%.c $CC $CFLAGS $prereq && mv $stem.$O $target