APE=/sys/src/ape
< $APE/config

L=/$objtype/lib/ape/libap.a
#L=libap.a$O
BUILTINS=
NREP=2
CFLAGS=-D_POSIX_SOURCE
EXTRAOBJS=`{extraobjs}

STDIO=U=S__IO_getc S__IO_putc S__dtoa S__fconv S_clearerr S_fclose \
	S_feof S_ferror S_fflush S_fgetc \
	S_fgetpos S_fgets S_fopen S_fprintf S_fputc S_fputs S_fread S_freopen \
	S_fscanf S_fseek S_fsetpos S_ftell S_ftoa S_fwrite S_getc S_getchar \
	S_gets S_perror  S_printf S_putc S_putchar S_puts S_rdline S_remove \
	9_rename S_rewind S_scanf S_sclose S_setbuf \
	S_setvbuf S_sopenr S_sopenw S_sprintf S_sscanf S_stdio S_strerror S_strtod \
	9_tmpfile S_tmpnam S_ungetc S_vfprintf S_vfscanf S_vprintf S_vsprintf S_exit \
	S_fileno S_pow10 S_fdopen
MATH=U= M_asin M_atan M_atan2 M_erf M_exp M_fabs M_floor M_fmod M_gamma M_hypot \
	M_j0 M_j1 M_jn M_log M_pow M_sin M_sinh 9_sqrt M_tan M_tanh \
	9_frexp
# machine specific string/mem stuff from extraobjs:
#    strcat strchr strcmp strcpy strlen strncmp strrchr
#    memchr memcmp memcpy memmove memset
STRING=U=G_strcoll G_strcspn G_strncat G_strncpy G_strpbrk G_strspn \
	G_strstr G_strtok G_strxfrm \
	G_itoa G_itol
GEN=U=9_malloc 9_brk G_ctype G_strtol G_strtoul \
	G_atoi G_atol G_atof 9_system 9_ctime G_div G_ldiv \
	9__exit G_toupper G_isalnum G_abs G__assert \
	G_rand G_qsort G_bsearch G_clock G_difftime G_mktime G_mbwc \
	G_strftime 9_raise
POSIX=U= 9_access 9_alarm 9_chdir 9_chmod 9_chown 9_close \
	9_creat 9_ctermid 9_cuserid 9_dirtostat \
	9_dup 9_execl 9_execle 9_execlp \
	9_execv 9_execve 9_execvp 9_fcntl \
	9_fork 9_fstat 9_getcwd \
	G_getenv 9_getgid 9_getgrgid \
	9_getgrnam 9_getlogin 9_getpid 9_getpgrp 9_getppid \
	9_getpwnam 9_getpwuid 9_getuid 9_isatty \
	9_kill 9_link P_locale 9_lseek 9_mkdir P_mkfifo 9_open \
	9_opendir P_pathconf 9_pause 9_pipe 9_read \
	9_rmdir 9_setgid 9${O}_setjmp 9_setpgid 9_setsid 9_setuid P_sigset 9_signal \
	9_sigaction 9_sigprocmask 9_sigpending 9_sigsuspend 9_sleep 9_stat \
	P_sysconf 9_tcgetattr 9_time 9_times 9_ttyname P_tzset 9_uname \
	9_umask 9_unlink 9_utime 9_wait 9_write \
	G_calloc S_abort $EXTRAOBJS
EXTRA=U=9__envsetup 9__buf 9__dirconv 9__errno 9__fcall 9__getpw 9__nap \
	9_select 9_pcons 9_profile 9${O}__ALARM 9${O}__BIND 9${O}__BRK_ \
	9${O}__CHDIR 9${O}__CLOSE 9${O}__CREATE 9${O}__DUP \
	9${O}__ERRSTR 9${O}__EXEC 9${O}__EXITS \
	9${O}__FSTAT 9${O}__FWSTAT 9${O}__MOUNT 9${O}__NOTED 9${O}__NOTIFY \
	9${O}__OPEN 9${O}__PIPE 9${O}__READ 9${O}__REMOVE 9${O}__RENDEZVOUS \
	9${O}__RFORK 9${O}__SEEK 9${O}__SEGATTACH 9${O}__SEGBRK 9${O}__SEGDETACH \
	9${O}__SEGFLUSH 9${O}__SEGFREE 9${O}__SLEEP 9${O}__STAT 9${O}__UNMOUNT \
	9${O}__WAIT 9${O}__WRITE 9${O}__WSTAT \
	9${O}_main9 9${O}_main9p \
	9_Xaccess 9_Xchdir 9_Xcreat 9_Xlink 9_Xopen 9_Xstat 9_Xunlink
# 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
NAMES=U=$STDIO $MATH $STRING $GEN $POSIX $EXTRA
OBJ=U=${NAMES:%=$L(%.$O)}

install:V:	$L $M $MP
compile:V:	$L $M $MP
test:VQ:
	echo libap has no test
clean:V:
	rm -f *.[$OS] *.a[$OS]
nuke:V:		clean
	rm -f $L
installall:V:
	for (objtype in $CPUS)
		mk install

$L:NQ:	$OBJ
	flag e -
	names=`{membername $newprereq}
	$AR rv $L $names && rm -f $names
	$RANLIB $L

$L(%.$O):N:	%.$O

S_%.$O:	stdio/%.c
	$CC $CFLAGS -I. -c $prereq && cp $stem.$O $target && rm $stem.$O

M_%.$O:	math/%.c
	$CC $CFLAGS -I. -c $prereq && cp $stem.$O $target && rm $stem.$O

G_%.$O:	gen/%.c
	$CC $CFLAGS -I. -c $prereq && cp $stem.$O $target && rm $stem.$O

P_%.$O:	posix/%.c
	$CC $CFLAGS -I. -c $prereq && cp $stem.$O $target && rm $stem.$O

9_%.$O:	plan9/%.c
	$CC $CFLAGS -I. -c $prereq && cp $stem.$O $target && rm $stem.$O

plan9/X%.c:D:	plan9/%.c
	sed 's/^'$"stem'\(/__&/' < $prereq > $target

plan9/Xcreat.c:D:	plan9/creat.c
	sed 's/^creat\(/__&/
	s/open\(/__&/' < $prereq > $target

9v_%.$O:	plan9mips/%.s
	$AS $prereq && cp $stem.$O $target && rm $stem.$O

92_%.$O:	plan968020/%.s
	$AS $prereq && cp $stem.$O $target && rm $stem.$O

9k_%.$O:	plan9sparc/%.s
	$AS $prereq && cp $stem.$O $target && rm $stem.$O

98_%.$O:	plan9386/%.s
	$AS $prereq && cp $stem.$O $target && rm $stem.$O

9z_%.$O:	plan9hobbit/%.s
	$AS $prereq && cp $stem.$O $target && rm $stem.$O

########	exceptions...

