# Makefile for bsd/lib/libc/stdio.

CC	= false
ARCH	= eniac
CFLAGS	= -O9 -I/usr/include/bsdcompat
CC1	= $(CC) -m$(ARCH) $(CFLAGS) -c

LIBRARY	= /usr/lib/$(CC)/$(ARCH)/libc.a
LIBBSD	= /usr/lib/$(CC)/$(ARCH)/libbsd.a
LIBNOFP	= /usr/lib/$(CC)/$(ARCH)/libnofp.a
LIBSOFT	= /usr/lib/$(CC)/$(ARCH)/libsoft.a
MAN	= /usr/man

all:	$(LIBRARY) $(LIBBSD) $(LIBNOFP) man

OBJECTS	= \
	$(LIBRARY)(clrerr.o) \
	$(LIBRARY)(fclose.o) \
	$(LIBRARY)(fdopen.o) \
	$(LIBRARY)(feof.o) \
	$(LIBRARY)(ferror.o) \
	$(LIBRARY)(fflush.o) \
	$(LIBRARY)(fgetc.o) \
	$(LIBRARY)(fgetln.o) \
	$(LIBRARY)(fgets.o) \
	$(LIBRARY)(fileno.o) \
	$(LIBRARY)(findfp.o) \
	$(LIBRARY)(flags.o) \
	$(LIBRARY)(fopen.o) \
	$(LIBRARY)(fprintf.o) \
	$(LIBRARY)(fputc.o) \
	$(LIBRARY)(fputs.o) \
	$(LIBRARY)(fread.o) \
	$(LIBRARY)(freopen.o) \
	$(LIBRARY)(fscanf.o) \
	$(LIBRARY)(fseek.o) \
	$(LIBRARY)(ftell.o) \
	$(LIBRARY)(fvwrite.o) \
	$(LIBRARY)(fwalk.o) \
	$(LIBRARY)(fwrite.o) \
	$(LIBRARY)(getc.o) \
	$(LIBRARY)(getchar.o) \
	$(LIBRARY)(getw.o) \
	$(LIBRARY)(makebuf.o) \
	$(LIBRARY)(mktemp.o) \
	$(LIBRARY)(perror.o) \
	$(LIBRARY)(printf.o) \
	$(LIBRARY)(putc.o) \
	$(LIBRARY)(putchar.o) \
	$(LIBRARY)(puts.o) \
	$(LIBRARY)(putw.o) \
	$(LIBRARY)(refill.o) \
	$(LIBRARY)(remove.o) \
	$(LIBRARY)(rewind.o) \
	$(LIBRARY)(rget.o) \
	$(LIBRARY)(scanf.o) \
	$(LIBRARY)(setbuf.o) \
	$(LIBRARY)(setvbuf.o) \
	$(LIBRARY)(snprintf.o) \
	$(LIBRARY)(sprintf.o) \
	$(LIBRARY)(sscanf.o) \
	$(LIBRARY)(stdio.o) \
	$(LIBRARY)(tmpnam.o) \
	$(LIBRARY)(ungetc.o) \
	$(LIBRARY)(vfprintf.o) \
	$(LIBRARY)(vfscanf.o) \
	$(LIBRARY)(vprintf.o) \
	$(LIBRARY)(vscanf.o) \
	$(LIBRARY)(vsnprintf.o) \
	$(LIBRARY)(vsprintf.o) \
	$(LIBRARY)(vsscanf.o) \
	$(LIBRARY)(wbuf.o) \
	$(LIBRARY)(wsetup.o) \

$(LIBRARY):	$(OBJECTS)
	$(CC) -c.a -o $@ *.o
	rm *.o

$(LIBRARY)(clrerr.o):	clrerr.c
	$(CC1) clrerr.c

$(LIBRARY)(fclose.o):	fclose.c
	$(CC1) fclose.c

$(LIBRARY)(fdopen.o):	fdopen.c
	$(CC1) fdopen.c

$(LIBRARY)(feof.o):	feof.c
	$(CC1) feof.c

$(LIBRARY)(ferror.o):	ferror.c
	$(CC1) ferror.c

$(LIBRARY)(fflush.o):	fflush.c
	$(CC1) fflush.c

$(LIBRARY)(fgetc.o):	fgetc.c
	$(CC1) fgetc.c

$(LIBRARY)(fgetln.o):	fgetln.c
	$(CC1) fgetln.c

$(LIBRARY)(fgets.o):	fgets.c
	$(CC1) fgets.c

$(LIBRARY)(fileno.o):	fileno.c
	$(CC1) fileno.c

$(LIBRARY)(findfp.o):	findfp.c
	$(CC1) findfp.c

$(LIBRARY)(flags.o):	flags.c
	$(CC1) flags.c

$(LIBRARY)(fopen.o):	fopen.c
	$(CC1) fopen.c

$(LIBRARY)(fprintf.o):	fprintf.c
	$(CC1) fprintf.c

$(LIBRARY)(fputc.o):	fputc.c
	$(CC1) fputc.c

$(LIBRARY)(fputs.o):	fputs.c
	$(CC1) fputs.c

$(LIBRARY)(fread.o):	fread.c
	$(CC1) fread.c

$(LIBRARY)(freopen.o):	freopen.c
	$(CC1) freopen.c

$(LIBRARY)(fscanf.o):	fscanf.c
	$(CC1) fscanf.c

$(LIBRARY)(fseek.o):	fseek.c
	$(CC1) fseek.c

$(LIBRARY)(ftell.o):	ftell.c
	$(CC1) ftell.c

$(LIBRARY)(fvwrite.o):	fvwrite.c
	$(CC1) fvwrite.c

$(LIBRARY)(fwalk.o):	fwalk.c
	$(CC1) fwalk.c

$(LIBRARY)(fwrite.o):	fwrite.c
	$(CC1) fwrite.c

$(LIBRARY)(getc.o):	getc.c
	$(CC1) getc.c

$(LIBRARY)(getchar.o):	getchar.c
	$(CC1) getchar.c

$(LIBRARY)(getw.o):	getw.c
	$(CC1) getw.c

$(LIBRARY)(makebuf.o):	makebuf.c
	$(CC1) makebuf.c

$(LIBRARY)(mktemp.o):	mktemp.c
	$(CC1) mktemp.c

$(LIBRARY)(perror.o):	perror.c
	$(CC1) perror.c

$(LIBRARY)(printf.o):	printf.c
	$(CC1) printf.c

$(LIBRARY)(putc.o):	putc.c
	$(CC1) putc.c

$(LIBRARY)(putchar.o):	putchar.c
	$(CC1) putchar.c

$(LIBRARY)(puts.o):	puts.c
	$(CC1) puts.c

$(LIBRARY)(putw.o):	putw.c
	$(CC1) putw.c

$(LIBRARY)(refill.o):	refill.c
	$(CC1) refill.c

$(LIBRARY)(remove.o):	remove.c
	$(CC1) remove.c

$(LIBRARY)(rewind.o):	rewind.c
	$(CC1) rewind.c

$(LIBRARY)(rget.o):	rget.c
	$(CC1) rget.c

$(LIBRARY)(scanf.o):	scanf.c
	$(CC1) scanf.c

$(LIBRARY)(setbuf.o):	setbuf.c
	$(CC1) setbuf.c

$(LIBRARY)(setvbuf.o):	setvbuf.c
	$(CC1) setvbuf.c

$(LIBRARY)(snprintf.o):	snprintf.c
	$(CC1) snprintf.c

$(LIBRARY)(sprintf.o):	sprintf.c
	$(CC1) sprintf.c

$(LIBRARY)(sscanf.o):	sscanf.c
	$(CC1) sscanf.c

$(LIBRARY)(stdio.o):	stdio.c
	$(CC1) stdio.c

$(LIBRARY)(tmpnam.o):	tmpnam.c
	$(CC1) -D_MINIX tmpnam.c

$(LIBRARY)(ungetc.o):	ungetc.c
	$(CC1) ungetc.c

$(LIBRARY)(vfprintf.o):	vfprintf.c
	$(CC1) vfprintf.c

$(LIBRARY)(vfscanf.o):	vfscanf.c
	$(CC1) vfscanf.c

$(LIBRARY)(vprintf.o):	vprintf.c
	$(CC1) vprintf.c

$(LIBRARY)(vscanf.o):	vscanf.c
	$(CC1) vscanf.c

$(LIBRARY)(vsnprintf.o):	vsnprintf.c
	$(CC1) vsnprintf.c

$(LIBRARY)(vsprintf.o):	vsprintf.c
	$(CC1) vsprintf.c

$(LIBRARY)(vsscanf.o):	vsscanf.c
	$(CC1) vsscanf.c

$(LIBRARY)(wbuf.o):	wbuf.c
	$(CC1) wbuf.c

$(LIBRARY)(wsetup.o):	wsetup.c
	$(CC1) wsetup.c

BSDOBJ	= \
	$(LIBBSD)(funopen.o) \
	$(LIBBSD)(tempnam.o) \

$(LIBBSD):	$(BSDOBJ)
	$(CC) -c.a -o $@ *.o
	rm *.o

$(LIBBSD)(funopen.o):	funopen.c
	$(CC1) funopen.c

$(LIBBSD)(tempnam.o):	tempnam.c
	$(CC1) tempnam.c

#
# *printf & *scanf functions without floating point.
#

NOFPOBJ	= \
	$(LIBNOFP)(fprintf.o) \
	$(LIBNOFP)(fscanf.o) \
	$(LIBNOFP)(printf.o) \
	$(LIBNOFP)(scanf.o) \
	$(LIBNOFP)(snprintf.o) \
	$(LIBNOFP)(sprintf.o) \
	$(LIBNOFP)(sscanf.o) \
	$(LIBNOFP)(vfprintf.o) \
	$(LIBNOFP)(vfscanf.o) \
	$(LIBNOFP)(vprintf.o) \
	$(LIBNOFP)(vscanf.o) \
	$(LIBNOFP)(vsnprintf.o) \
	$(LIBNOFP)(vsprintf.o) \
	$(LIBNOFP)(vsscanf.o) \

$(LIBNOFP):	$(NOFPOBJ)
	$(CC) -c.a -o $@ *.o
	rm *.o

$(LIBNOFP)(fprintf.o):	fprintf.c
	$(CC1) fprintf.c

$(LIBNOFP)(fscanf.o):	fscanf.c
	$(CC1) fscanf.c

$(LIBNOFP)(printf.o):	printf.c
	$(CC1) printf.c

$(LIBNOFP)(scanf.o):	scanf.c
	$(CC1) scanf.c

$(LIBNOFP)(snprintf.o):	snprintf.c
	$(CC1) snprintf.c

$(LIBNOFP)(sprintf.o):	sprintf.c
	$(CC1) sprintf.c

$(LIBNOFP)(sscanf.o):	sscanf.c
	$(CC1) sscanf.c

$(LIBNOFP)(vfprintf.o):	vfprintf.c
	$(CC1) -DFLOATING_POINT=0 vfprintf.c

$(LIBNOFP)(vfscanf.o):	vfscanf.c
	$(CC1) -DFLOATING_POINT=0 vfscanf.c

$(LIBNOFP)(vprintf.o):	vprintf.c
	$(CC1) vprintf.c

$(LIBNOFP)(vscanf.o):	vscanf.c
	$(CC1) vscanf.c

$(LIBNOFP)(vsnprintf.o):	vsnprintf.c
	$(CC1) vsnprintf.c

$(LIBNOFP)(vsprintf.o):	vsprintf.c
	$(CC1) vsprintf.c

$(LIBNOFP)(vsscanf.o):	vsscanf.c
	$(CC1) vsscanf.c

#
# *printf & *scanf functions with software floating point.
#

SOFTOBJ	= \
	$(LIBSOFT)(fprintf.o) \
	$(LIBSOFT)(fscanf.o) \
	$(LIBSOFT)(printf.o) \
	$(LIBSOFT)(scanf.o) \
	$(LIBSOFT)(snprintf.o) \
	$(LIBSOFT)(sprintf.o) \
	$(LIBSOFT)(sscanf.o) \
	$(LIBSOFT)(vfprintf.o) \
	$(LIBSOFT)(vfscanf.o) \
	$(LIBSOFT)(vprintf.o) \
	$(LIBSOFT)(vscanf.o) \
	$(LIBSOFT)(vsnprintf.o) \
	$(LIBSOFT)(vsprintf.o) \
	$(LIBSOFT)(vsscanf.o) \

soft:	$(LIBSOFT)

$(LIBSOFT):	$(SOFTOBJ)
	$(CC) -c.a -o $@ *.o
	rm *.o

$(LIBSOFT)(fprintf.o):	fprintf.c
	$(CC1) fprintf.c

$(LIBSOFT)(fscanf.o):	fscanf.c
	$(CC1) fscanf.c

$(LIBSOFT)(printf.o):	printf.c
	$(CC1) printf.c

$(LIBSOFT)(scanf.o):	scanf.c
	$(CC1) scanf.c

$(LIBSOFT)(snprintf.o):	snprintf.c
	$(CC1) snprintf.c

$(LIBSOFT)(sprintf.o):	sprintf.c
	$(CC1) sprintf.c

$(LIBSOFT)(sscanf.o):	sscanf.c
	$(CC1) sscanf.c

$(LIBSOFT)(vfprintf.o):	vfprintf.c
	$(CC1) -fsoft vfprintf.c

$(LIBSOFT)(vfscanf.o):	vfscanf.c
	$(CC1) -fsoft vfscanf.c

$(LIBSOFT)(vprintf.o):	vprintf.c
	$(CC1) vprintf.c

$(LIBSOFT)(vscanf.o):	vscanf.c
	$(CC1) vscanf.c

$(LIBSOFT)(vsnprintf.o):	vsnprintf.c
	$(CC1) vsnprintf.c

$(LIBSOFT)(vsprintf.o):	vsprintf.c
	$(CC1) vsprintf.c

$(LIBSOFT)(vsscanf.o):	vsscanf.c
	$(CC1) vsscanf.c

man:	\
	$(MAN)/man3/fclose.3 \
	$(MAN)/man3/ferror.3 \
	$(MAN)/man3/fopen.3 \
	$(MAN)/man3/fread.3 \
	$(MAN)/man3/fseek.3 \
	$(MAN)/man3/getc.3 \
	$(MAN)/man3/gets.3 \
	$(MAN)/man3/printf.3 \
	$(MAN)/man3/putc.3 \
	$(MAN)/man3/puts.3 \
	$(MAN)/man3/scanf.3 \
	$(MAN)/man3/setbuf.3 \
	$(MAN)/man3/stdio.3 \
	$(MAN)/man3/ungetc.3 \

$(MAN)/man3/fclose.3:	fclose.3
	install -lc $? $@

$(MAN)/man3/ferror.3:	ferror.3
	install -lc $? $@

$(MAN)/man3/fopen.3:	fopen.3
	install -lc $? $@

$(MAN)/man3/fread.3:	fread.3
	install -lc $? $@

$(MAN)/man3/fseek.3:	fseek.3
	install -lc $? $@

$(MAN)/man3/getc.3:	getc.3
	install -lc $? $@

$(MAN)/man3/gets.3:	gets.3
	install -lc $? $@

$(MAN)/man3/printf.3:	printf.3
	install -lc $? $@

$(MAN)/man3/putc.3:	putc.3
	install -lc $? $@

$(MAN)/man3/scanf.3:	scanf.3
	install -lc $? $@

$(MAN)/man3/puts.3:	puts.3
	install -lc $? $@

$(MAN)/man3/setbuf.3:	setbuf.3
	install -lc $? $@

$(MAN)/man3/stdio.3:	stdio.3
	install -lc $? $@

$(MAN)/man3/ungetc.3:	ungetc.3
	install -lc $? $@
