#
# Copyright (c) 1980 Regents of the University of California.
# All rights reserved.  The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
#	@(#)Makefile	4.19 (Berkeley) 3/9/86
#
#
# The system has two monitoring schemes, utilizing either ``prof''
# or ``gprof''. DFLMON determines the default profiler; mon.o
# specifies that ``prof'' is the default, gmon.o specifies that
# ``gprof'' is the default.
#
# Machine dependent routines are located in a subtree which parallels
# the top directories.  This subtree is identified by the machine name.
#
# Compatibility routines are kept in directories with a prefixing
# ``compat'' (so they all sort together).
# 
# The C run-time startup code is always machine dependent and expected
# to be located in ${MACHINE}/csu
#
# ISI: The C run-time startup code is also floating-point format dependent.
# It is located is is68k/is68k{ieee,sky,68881}/csu. The Format of the ISI 
# directories is shown below:
#                                       .
#                                       |
#      /-------------|-----------|------|-------|------|-----|-------|-------\
#      |             |           |      |       |      |     |       |       |
#    compat*    gen/genINTL    inet    is68k    net    ns    rpc    stdio    yp
#
#                                       |
#                     /--------|--------+-------|------|-------\
#                     |        |        |       |      |       |
#                   compat*    gen    is68k*    net    stdio    sys
#                                       |
#                                /------+------\
#                                |      |      |
#                               csu    gen    stdio
#
# All files contain sccsid strings, but these are not compiled into
# library objects by default, as a space-saving measure.  To produce
# a library that contains these strings in every object except
# system call stubs, add -DLIBC_SCCS to DEFS below; to put these
# strings into system call stubs, use -DSYSLIBC_SCCS.
#
# There are two possible methods of doing host name look up.  They are
# to use the name server or /etc/hosts. HOSTLOOKUP defines which method
# is to be compiled into libc  :
#								     
#	defining HOSTLOOKUP to be "named", compiles the         
#	host lookup routines that use the BIND name server.
#
#	defining HOSTLOOKUP to be "hosttable", compiles
#	the host lookup routines that use /etc/hosts.
#
# ISI: 4.3 defines HOSTLOOKUP to be "named"
#
#HOSTLOOKUP=	hosttable
HOSTLOOKUP=	named
#							
DESTDIR=
INSTALL=	install -c -m 644
DFLMON=		mon.o
#MACHINE=	vax
MACHINE=	is68k
DEFS=
COMPAT=		compat-4.1 compat-sys5
ALL=		gen genINTL inet net ns stdio ${MACHINE} ${COMPAT} ${NFS} 
ALLDOMS=	gen inet net ns stdio ${MACHINE} ${COMPAT} ${NFS} 
ALLINTL=	genINTL inet net ns stdio ${MACHINE} ${COMPAT} ${NFS} 
ALLHOST=	${ALL} net/${HOSTLOOKUP}
ALLDOMSHOST=	${ALLDOMS} net/${HOSTLOOKUP}
ALLINTLHOST=	${ALLINTL} net/${HOSTLOOKUP}
FPALL=		is68k/is68kieee is68k/is68ksky is68k/is68km
CSUALL=		is68k/is68kieee/csu is68k/is68ksky/csu is68k/is68km/csu
NFS=		rpc yp
TAGSFILE=	tags

# Objects which apear in a specific order to optimize image size based on:
#	o	floating point in printf	"_fltused"
#	o	use of stdio			"_cleanup"
ORDER=	doprnt.o fprintf.o printf.o sprintf.o doprnt_nf.o fltused.o \
	flsbuf.o findiop.o exit.o fakcu.o

#------------------------------------------------------------------------------
DOMESTIC=	libc.a		libmc.a		libskyc.a \
		libc_p.a	
#		libc_p.a	libmc_p.a	libskyc_p.a

INTERNATIONAL=	libc.I.a	libmc.I.a	libskyc.I.a \
		libc_p.I.a	libmc_p.I.a	libskyc_p.I.a
#------------------------------------------------------------------------------

#all:	${DOMESTIC} ${INTERNATIONAL}
all:	${DOMESTIC}


#--------- DOMESTIC

libc.a:	${ALLDOMSHOST} is68k/is68kieee is68k/is68kieee/csu
	@echo '------------------------------------------------------'
	@echo Making normal libc.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib); done
	(cd tmp; ar x ../is68k/is68kieee/is68kieeelib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libc.a `lorder \`cat t1\` | tsort` is68k/is68kieee/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libc.a $$i); done
	-rm -rf tmp t1

libc_p.a:	${ALLDOMSHOST} is68k/is68kieee is68k/is68kieee/csu
	@echo '------------------------------------------------------'
	@echo Making profiled libc_p.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib_p); done
	(cd tmp; ar x ../is68k/is68kieee/is68kieeelib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libc_p.a `lorder \`cat t1\` | tsort` is68k/is68kieee/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libc_p.a $$i); done
	rm -rf tmp t1

libmc.a:	${ALLDOMSHOST} is68k/is68km is68k/is68km/csu
	@echo '------------------------------------------------------'
	@echo Making normal libmc.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib_m); done
	(cd tmp; ar x ../is68k/is68km/is68kmlib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libmc.a `lorder \`cat t1\` | tsort` is68k/is68km/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libmc.a $$i); done
	rm -rf tmp t1

libmc_p.a:	${ALLDOMSHOST} is68k/is68km is68k/is68km/csu
	@echo '------------------------------------------------------'
	@echo Making profiled libmc_p.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib_mp); done
	(cd tmp; ar x ../is68k/is68km/is68kmlib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libmc_p.a `lorder \`cat t1\` | tsort` is68k/is68km/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libmc_p.a $$i); done
	rm -rf tmp t1

libskyc.a:	${ALLDOMSHOST} is68k/is68ksky is68k/is68ksky/csu
	@echo '------------------------------------------------------'
	@echo Making normal libskyc.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib); done
	(cd tmp; ar x ../is68k/is68ksky/is68kskylib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libskyc.a `lorder \`cat t1\` | tsort` is68k/is68ksky/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libskyc.a $$i); done
	rm -rf tmp t1

libskyc_p.a:	${ALLDOMSHOST} is68k/is68ksky is68k/is68ksky/csu
	@echo '------------------------------------------------------'
	@echo Making profiled libskyc_p.a
	-rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLDOMS}; do (cd tmp; ar x ../$$i/$${i}lib_p); done
	(cd tmp; ar x ../is68k/is68ksky/is68kskylib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libskyc_p.a `lorder \`cat t1\` | tsort` is68k/is68ksky/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libskyc_p.a $$i); done
	rm -rf tmp t1

#--------- INTERNATIONAL
libc.I.a libc_p.I.a:	${ALLINTLHOST} is68k/is68kieee is68k/is68kieee/csu
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib); done
	(cd tmp; ar x ../is68k/is68kieee/is68kieeelib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libc.I.a `lorder \`cat t1\` | tsort` is68k/is68kieee/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libc.I.a $$i); done
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib_p); done
	(cd tmp; ar x ../is68k/is68kieee/is68kieeelib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libc_p.I.a `lorder \`cat t1\` | tsort` is68k/is68kieee/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libc_p.I.a $$i); done
	rm -rf tmp t1

libmc.I.a libmc_p.I.a:	${ALLINTLHOST} is68k/is68km is68k/is68km/csu
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib_m); done
	(cd tmp; ar x ../is68k/is68km/is68kmlib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libmc.I.a `lorder \`cat t1\` | tsort` is68k/is68km/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libmc.I.a $$i); done
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib_mp); done
	(cd tmp; ar x ../is68k/is68km/is68kmlib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libmc_p.I.a `lorder \`cat t1\` | tsort` is68k/is68km/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libmc_p.I.a $$i); done
	rm -rf tmp t1

libskyc.I.a libskyc_p.I.a:	${ALLINTLHOST} is68k/is68ksky is68k/is68ksky/csu
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib); done
	(cd tmp; ar x ../is68k/is68ksky/is68kskylib)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libskyc.I.a `lorder \`cat t1\` | tsort` is68k/is68ksky/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libskyc.I.a $$i); done
	rm -rf tmp t1
	-mkdir tmp
	for i in ${ALLINTL}; do (cd tmp; ar x ../$$i/$${i}lib_p); done
	(cd tmp; ar x ../is68k/is68ksky/is68kskylib_p)
	(cd tmp; ar x ../net/${HOSTLOOKUP}/hostlib_p)
	ls tmp/*.o | sort -t/ +1 > t1
	ar cr libskyc_p.I.a `lorder \`cat t1\` | tsort` is68k/is68ksky/csu/${DFLMON}
	for i in ${ORDER}; do (ar m libskyc_p.I.a $$i); done
	rm -rf tmp t1

${ALLHOST} ${FPALL} ${CSUALL}: FRC
	cd $@; make ${MFLAGS} DEFS=${DEFS}

FRC:

#--- DOMESTIC
install: libc.a libc_p.a libskyc.a libmc.a
	${INSTALL} libc.a ${DESTDIR}/usr/lib/libc.a
	ranlib ${DESTDIR}/usr/lib/libc.a
	${INSTALL} libc_p.a ${DESTDIR}/usr/lib/libc_p.a
	ranlib ${DESTDIR}/usr/lib/libc_p.a
	${INSTALL} libskyc.a ${DESTDIR}/usr/lib/libskyc.a
	ranlib ${DESTDIR}/usr/lib/libskyc.a
#	${INSTALL} libskyc_p.a ${DESTDIR}/usr/lib/libskyc_p.a
#	ranlib ${DESTDIR}/usr/lib/libskyc_p.a
	${INSTALL} libmc.a ${DESTDIR}/usr/lib/libmc.a
	ranlib ${DESTDIR}/usr/lib/libmc.a
#	${INSTALL} libmc_p.a ${DESTDIR}/usr/lib/libmc_p.a
#	ranlib ${DESTDIR}/usr/lib/libmc_p.a
	for i in ${CSUALL} ; \
		do (cd $$i; make DESTDIR=${DESTDIR} install); done
	cd yp; make DESTDIR=${DESTDIR} install

#--- INTERNATIONAL
Install: 
	${INSTALL} libc.I.a ${DESTDIR}/usr/lib/libc.I.a
	ranlib ${DESTDIR}/usr/lib/libc.I.a
	${INSTALL} libc_p.I.a ${DESTDIR}/usr/lib/libc_p.I.a
	ranlib ${DESTDIR}/usr/lib/libc_p.I.a
	${INSTALL} libskyc.I.a ${DESTDIR}/usr/lib/libskyc.I.a
	ranlib ${DESTDIR}/usr/lib/libskyc.I.a
#	${INSTALL} libskyc_p.I.a ${DESTDIR}/usr/lib/libskyc_p.I.a
#	ranlib ${DESTDIR}/usr/lib/libskyc_p.I.a
	${INSTALL} libmc.I.a ${DESTDIR}/usr/lib/libmc.I.a
	ranlib ${DESTDIR}/usr/lib/libmc.I.a
#	${INSTALL} libmc_p.I.a ${DESTDIR}/usr/lib/libmc_p.I.a
#	ranlib ${DESTDIR}/usr/lib/libmc_p.I.a
	cd is68k/is68kieee/csu; make DESTDIR=${DESTDIR} install
	cd is68k/is68ksky/csu; make DESTDIR=${DESTDIR} install
	cd is68k/is68km/csu; make DESTDIR=${DESTDIR} install
	cd yp; make DESTDIR=${DESTDIR} install

tags:
	for i in ${ALLHOST}; do \
		(cd $$i; make ${MFLAGS} TAGSFILE=../${TAGSFILE} tags); \
	done

clean:
	for i in ${CSUALL} ${FPALL} ${ALL} net/hosttable net/named; \
		 do (cd $$i; make ${MFLAGS} clean); done
	rm -f *.a
	rm -rf tmp t1
	rm -f errs Errs rslts make.out makeout core

depend:
	for i in ${CSUALL} ${ALL} net/hosttable net/named; \
		do (cd $$i; make ${MFLAGS} DEFS=${DEFS} depend); done
