Makefile revision 16550
12061Sjkh#
216550Sjkh#	$Id: Makefile,v 1.82 1996/06/20 13:38:15 adam Exp $
32061Sjkh#
42061Sjkh# Make command line options:
515603Smarkm#	-DCLOBBER will remove /usr/include
62061Sjkh#	-DMAKE_LOCAL to add ./local to the SUBDIR list
72061Sjkh#	-DMAKE_PORTS to add ./ports to the SUBDIR list
83197Scsgr#	-DMAKE_EBONES to build eBones (KerberosIV)
93197Scsgr#
102061Sjkh#	-DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
1112483Speter#	-DNOCLEAN do not clean at all
122160Scsgr#	-DNOCRYPT will prevent building of crypt versions
132834Swollman#	-DNOLKM do not build loadable kernel modules
142061Sjkh#	-DNOOBJDIR do not run ``${MAKE} obj''
152061Sjkh#	-DNOPROFILE do not build profiled libraries
162160Scsgr#	-DNOSECURE do not go into secure subdir
171594Srgrimes
182061Sjkh# Put initial settings here.
192061SjkhSUBDIR=
201594Srgrimes
217407Srgrimes# We must do include and lib first so that the perl *.ph generation
227407Srgrimes# works correctly as it uses the header files installed by this.
237108Sphk.if exists(include)
247108SphkSUBDIR+= include
257108Sphk.endif
267407Srgrimes.if exists(lib)
277407SrgrimesSUBDIR+= lib
287407Srgrimes.endif
297108Sphk
302061Sjkh.if exists(bin)
312061SjkhSUBDIR+= bin
322061Sjkh.endif
332061Sjkh.if exists(contrib)
342061SjkhSUBDIR+= contrib
352061Sjkh.endif
362061Sjkh.if exists(games)
372061SjkhSUBDIR+= games
382061Sjkh.endif
392061Sjkh.if exists(gnu)
402061SjkhSUBDIR+= gnu
412061Sjkh.endif
423197Scsgr.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
432626ScsgrSUBDIR+= eBones
442626Scsgr.endif
452061Sjkh.if exists(libexec)
462061SjkhSUBDIR+= libexec
472061Sjkh.endif
482061Sjkh.if exists(sbin)
492061SjkhSUBDIR+= sbin
502061Sjkh.endif
512061Sjkh.if exists(share)
522061SjkhSUBDIR+= share
532061Sjkh.endif
542061Sjkh.if exists(sys)
552061SjkhSUBDIR+= sys
562061Sjkh.endif
572061Sjkh.if exists(usr.bin)
582061SjkhSUBDIR+= usr.bin
592061Sjkh.endif
602061Sjkh.if exists(usr.sbin)
612061SjkhSUBDIR+= usr.sbin
622061Sjkh.endif
632834Swollman.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
642834SwollmanSUBDIR+= secure
652834Swollman.endif
662834Swollman.if exists(lkm) && !defined(NOLKM)
672834SwollmanSUBDIR+= lkm
682834Swollman.endif
691594Srgrimes
704486Sphk# etc must be last for "distribute" to work
714486Sphk.if exists(etc) && make(distribute)
724486SphkSUBDIR+= etc
734486Sphk.endif
744486Sphk
752061Sjkh# These are last, since it is nice to at least get the base system
762061Sjkh# rebuilt before you do them.
772061Sjkh.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
782061SjkhSUBDIR+= local
792061Sjkh.endif
802061Sjkh.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
812061SjkhSUBDIR+= ports
822061Sjkh.endif
832061Sjkh
842061Sjkh# Handle the -DNOOBJDIR and -DNOCLEANDIR
852061Sjkh.if defined(NOOBJDIR)
862061SjkhOBJDIR=
872061Sjkh.else
882061SjkhOBJDIR=		obj
892061Sjkh.endif
9012483Speter
9112483Speter.if defined(NOCLEAN)
9212483SpeterCLEANDIR=
9312483SpeterWORLD_CLEANDIST=obj
9412483Speter.else
9512483SpeterWORLD_CLEANDIST=cleandist
962061Sjkh.if defined(NOCLEANDIR)
972061SjkhCLEANDIR=	clean
988854Srgrimes.else
992061SjkhCLEANDIR=	cleandir
1002061Sjkh.endif
10112483Speter.endif
1022061Sjkh
10315603SmarkmMK_FLAGS=	-DNOMAN -DNOPROFILE
10415603Smarkm
10516550Sjkh.if !target(pre-world)
10616550Sjkhpre-world:
10716550Sjkh	@/usr/bin/true
10816550Sjkh.endif
10916550Sjkh
11016550Sjkhworld:	pre-world hierarchy mk $(WORLD_CLEANDIST) bootstrap include-tools includes lib-tools libraries build-tools
1112061Sjkh	@echo "--------------------------------------------------------------"
1122061Sjkh	@echo " Rebuilding ${DESTDIR} The whole thing"
1132061Sjkh	@echo "--------------------------------------------------------------"
1142061Sjkh	@echo
1152061Sjkh	${MAKE} depend all install
1162061Sjkh	cd ${.CURDIR}/share/man &&		${MAKE} makedb
11716550Sjkh.if target(post-world)
11816550Sjkh	cd ${.CURDIR} && ${MAKE} post-world
11916550Sjkh.endif
12014545Sjkh	@echo "make world completed on `date`"
1212061Sjkh
12214787Spaulbootstrap:
12315603Smarkm	cd ${.CURDIR}/usr.bin/xlint && ${MAKE} ${MK_FLAGS} lint1 lint2 xlint
12415603Smarkm	cd ${.CURDIR}/usr.bin/xlint/lint1 && ${MAKE} ${MK_FLAGS} install
12515603Smarkm	cd ${.CURDIR}/usr.bin/xlint/lint2 && ${MAKE} ${MK_FLAGS} install
12615603Smarkm	cd ${.CURDIR}/usr.bin/xlint/xlint && ${MAKE} ${MK_FLAGS} install
12716526Snate	cd ${.CURDIR}/usr.bin/lex && ${MAKE} ${MK_FLAGS} bootstrap && \
12816526Snate		${MAKE} ${MK_FLAGS} all install
12914787Spaul
13012483Speterreinstall:	hierarchy mk includes
13112483Speter	@echo "--------------------------------------------------------------"
13212483Speter	@echo " Reinstall ${DESTDIR} The whole thing"
13312483Speter	@echo "--------------------------------------------------------------"
13412483Speter	@echo
13512483Speter	${MAKE} install
13612483Speter	cd ${.CURDIR}/share/man &&		${MAKE} makedb
13712483Speter
1383030Srgrimeshierarchy:
1392061Sjkh	@echo "--------------------------------------------------------------"
1403030Srgrimes	@echo " Making hierarchy"
1412061Sjkh	@echo "--------------------------------------------------------------"
1426722Sphk	cd ${.CURDIR}/etc &&		${MAKE} distrib-dirs
1432061Sjkh
1442302Spaulupdate:
1452302Spaul.if defined(SUP_UPDATE)
1462302Spaul	@echo "--------------------------------------------------------------"
1472302Spaul	@echo "Running sup"
1482302Spaul	@echo "--------------------------------------------------------------"
1492302Spaul	@sup -v ${SUPFILE}
15010760Sache.if defined(SUPFILE1)
15110760Sache	@sup -v ${SUPFILE1}
1522302Spaul.endif
15310760Sache.if defined(SUPFILE2)
15410760Sache	@sup -v ${SUPFILE2}
15510760Sache.endif
15610760Sache.endif
1572302Spaul.if defined(CVS_UPDATE)
1582302Spaul	@echo "--------------------------------------------------------------"
1592302Spaul	@echo "Updating /usr/src from cvs repository" ${CVSROOT}
1602302Spaul	@echo "--------------------------------------------------------------"
1612302Spaul	cd ${.CURDIR} &&  cvs update -P -d
1622302Spaul.endif
1632302Spaul
1642061Sjkhcleandist:
1652061Sjkh.if !defined(NOCLEANDIR)
1662061Sjkh	@echo "--------------------------------------------------------------"
1672061Sjkh	@echo " Cleaning up the source tree, and rebuilding the obj tree"
1682061Sjkh	@echo "--------------------------------------------------------------"
1692061Sjkh	@echo
1702061Sjkh	here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
1712061Sjkh	if test -d /usr/obj -a ! -d $$dest; then \
1722061Sjkh		mkdir -p $$dest; \
1732061Sjkh	else \
1742061Sjkh		true; \
1752061Sjkh	fi; \
1762061Sjkh	cd $$dest && rm -rf ${SUBDIR}
1772061Sjkh	find . -name obj | xargs rm -rf
1782061Sjkh.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
1792061Sjkh	# The cd is done as local may well be a symbolic link
1802061Sjkh	-cd local && find . -name obj | xargs rm -rf
1812061Sjkh.endif
1822061Sjkh.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
1832061Sjkh	# The cd is done as local may well be a symbolic link
1842061Sjkh	-cd ports && find . -name obj | xargs rm -rf
1852061Sjkh.endif
1862061Sjkh	${MAKE} cleandir
1872061Sjkh	${MAKE} obj
1882061Sjkh.endif
1892061Sjkh
1903626Swollmaninstallmost:
1913626Swollman	@echo "--------------------------------------------------------------"
1923626Swollman	@echo " Installing programs only"
1933626Swollman	@echo "--------------------------------------------------------------"
1943626Swollman	cd ${.CURDIR}/bin	&&	${MAKE} ${.MAKEFLAGS} install
1953626Swollman	cd ${.CURDIR}/sbin	&&	${MAKE} ${.MAKEFLAGS} install
1963626Swollman	cd ${.CURDIR}/libexec	&&	${MAKE} ${.MAKEFLAGS} install
1973626Swollman	cd ${.CURDIR}/usr.bin	&&	${MAKE} ${.MAKEFLAGS} install
1983626Swollman	cd ${.CURDIR}/usr.sbin	&&	${MAKE} ${.MAKEFLAGS} install
1993626Swollman	cd ${.CURDIR}/gnu/libexec &&	${MAKE} ${.MAKEFLAGS} install
2003626Swollman	cd ${.CURDIR}/gnu/usr.bin &&	${MAKE} ${.MAKEFLAGS} install
2017059Sroberto	cd ${.CURDIR}/gnu/usr.sbin &&	${MAKE} ${.MAKEFLAGS} install
2023626Swollman#.if defined(MAKE_EBONES) && !defined(NOCRYPT)
2033626Swollman#	cd ${.CURDIR}/eBones	&&	${MAKE} ${.MAKEFLAGS} installmost
2043626Swollman#.endif
2053626Swollman#.if !defined(NOSECURE) && !defined(NOCRYPT)
2063626Swollman#	cd ${.CURDIR}/secure	&&	${MAKE} ${.MAKEFLAGS} installmost
2073626Swollman#.endif
2083626Swollman
2093626Swollmanmost:
2103626Swollman	@echo "--------------------------------------------------------------"
2113626Swollman	@echo " Building programs only"
2123626Swollman	@echo "--------------------------------------------------------------"
2133626Swollman	cd ${.CURDIR}/bin	&&	${MAKE} ${.MAKEFLAGS} all
2143626Swollman	cd ${.CURDIR}/sbin	&&	${MAKE} ${.MAKEFLAGS} all
2153626Swollman	cd ${.CURDIR}/libexec	&&	${MAKE} ${.MAKEFLAGS} all
2163626Swollman	cd ${.CURDIR}/usr.bin	&&	${MAKE} ${.MAKEFLAGS} all
2173626Swollman	cd ${.CURDIR}/usr.sbin	&&	${MAKE} ${.MAKEFLAGS} all
2183626Swollman	cd ${.CURDIR}/gnu/libexec &&	${MAKE} ${.MAKEFLAGS} all
2193626Swollman	cd ${.CURDIR}/gnu/usr.bin &&	${MAKE} ${.MAKEFLAGS} all
2207446Ssos	cd ${.CURDIR}/gnu/usr.sbin &&	${MAKE} ${.MAKEFLAGS} all
2213626Swollman#.if defined(MAKE_EBONES) && !defined(NOCRYPT)
2223626Swollman#	cd ${.CURDIR}/eBones	&&	${MAKE} ${.MAKEFLAGS} most
2233626Swollman#.endif
2243626Swollman#.if !defined(NOSECURE) && !defined(NOCRYPT)
2253626Swollman#	cd ${.CURDIR}/secure	&&	${MAKE} ${.MAKEFLAGS} most
2263626Swollman#.endif
2273626Swollman
2282061Sjkhmk:
2292061Sjkh	@echo "--------------------------------------------------------------"
2302061Sjkh	@echo " Rebuilding ${DESTDIR}/usr/share/mk"
2312061Sjkh	@echo "--------------------------------------------------------------"
2322061Sjkh	cd ${.CURDIR}/share/mk &&		${MAKE} install
2332061Sjkh
23414119Speterincludes:
2352061Sjkh	@echo "--------------------------------------------------------------"
2362061Sjkh	@echo " Rebuilding ${DESTDIR}/usr/include"
2372061Sjkh	@echo "--------------------------------------------------------------"
2382061Sjkh	@echo
2392061Sjkh.if defined(CLOBBER)
2407130Srgrimes	rm -rf ${DESTDIR}/usr/include/*
2417130Srgrimes	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
2427130Srgrimes		-p ${DESTDIR}/usr/include
2432061Sjkh.endif
2442061Sjkh	cd ${.CURDIR}/include &&		${MAKE} install
2454249Sache	cd ${.CURDIR}/gnu/include &&		${MAKE}	install
2462685Srgrimes	cd ${.CURDIR}/gnu/lib/libreadline &&	${MAKE} beforeinstall
2476927Snate	cd ${.CURDIR}/gnu/lib/libregex &&	${MAKE} beforeinstall
2482685Srgrimes	cd ${.CURDIR}/gnu/lib/libg++ &&         ${MAKE} beforeinstall
2493518Sache	cd ${.CURDIR}/gnu/lib/libdialog &&      ${MAKE} beforeinstall
2503197Scsgr.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
2513197Scsgr	cd ${.CURDIR}/eBones/include &&		${MAKE} beforeinstall
25212166Sjkh	cd ${.CURDIR}/eBones/lib/libkrb &&	${MAKE} beforeinstall
25312485Sjkh	cd ${.CURDIR}/eBones/lib/libkadm &&	${MAKE} beforeinstall
2543197Scsgr.endif
2552061Sjkh	cd ${.CURDIR}/lib/libc &&		${MAKE} beforeinstall
2562061Sjkh	cd ${.CURDIR}/lib/libcurses &&		${MAKE} beforeinstall
2572061Sjkh	cd ${.CURDIR}/lib/libedit &&		${MAKE} beforeinstall
2582883Sphk	cd ${.CURDIR}/lib/libmd &&		${MAKE} beforeinstall
2593429Sache	cd ${.CURDIR}/lib/libmytinfo &&		${MAKE}	beforeinstall
2603429Sache	cd ${.CURDIR}/lib/libncurses &&		${MAKE}	beforeinstall
2617281Srgrimes.if !defined(WANT_CSRG_LIBM)
2623242Spaul	cd ${.CURDIR}/lib/msun &&		${MAKE} beforeinstall
2633242Spaul.endif
2647171Sats	cd ${.CURDIR}/lib/libpcap &&		${MAKE} beforeinstall
2652061Sjkh	cd ${.CURDIR}/lib/librpcsvc &&		${MAKE} beforeinstall
2663213Spst	cd ${.CURDIR}/lib/libskey &&		${MAKE} beforeinstall
2674942Sache	cd ${.CURDIR}/lib/libtermcap &&		${MAKE}	beforeinstall
2685749Swollman	cd ${.CURDIR}/lib/libcom_err &&		${MAKE} beforeinstall
2695772Swollman	cd ${.CURDIR}/lib/libss &&		${MAKE} beforeinstall
2705866Sache	cd ${.CURDIR}/lib/libscsi &&		${MAKE}	beforeinstall
27113138Speter	cd ${.CURDIR}/lib/libutil &&		${MAKE}	beforeinstall
2722061Sjkh
2735366Snatelib-tools:
2745366Snate	@echo "--------------------------------------------------------------"
2756934Sse	@echo " Rebuilding tools needed to build the libraries"
2765366Snate	@echo "--------------------------------------------------------------"
2775366Snate	@echo
27812507Snate	cd ${.CURDIR}/usr.bin/xinstall && \
27915603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2807292Srgrimes	cd ${.CURDIR}/gnu/usr.bin/ld && \
28115603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2825366Snate	cd ${.CURDIR}/usr.bin/ar && \
28315603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2845366Snate	cd ${.CURDIR}/usr.bin/ranlib && \
28515603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2865366Snate	cd ${.CURDIR}/usr.bin/nm && \
28715603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2885772Swollman	cd ${.CURDIR}/usr.bin/lex/lib && \
28915603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2905728Swollman	cd ${.CURDIR}/usr.bin/compile_et && \
29115603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR} && \
2925728Swollman		rm -f /usr/sbin/compile_et
2935728Swollman	cd ${.CURDIR}/usr.bin/mk_cmds && \
29415603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
2955366Snate
2962061Sjkhlibraries:
2972061Sjkh	@echo "--------------------------------------------------------------"
2982061Sjkh	@echo " Rebuilding ${DESTDIR}/usr/lib"
2992061Sjkh	@echo "--------------------------------------------------------------"
3002061Sjkh	@echo
3018295Srgrimes.if exists(lib/libcompat)
3028295Srgrimes	cd ${.CURDIR}/lib/libcompat && \
30315603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3048295Srgrimes.endif
3058489Srgrimes.if exists(lib/libncurses)
3068489Srgrimes	cd ${.CURDIR}/lib/libncurses && \
30715603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3088489Srgrimes.endif
3098489Srgrimes.if exists(lib/libtermcap)
3108489Srgrimes	cd ${.CURDIR}/lib/libtermcap && \
31115603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3128489Srgrimes.endif
3138295Srgrimes.if exists(gnu)
3142468Spaul	cd ${.CURDIR}/gnu/lib && \
31515603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3162273Spaul	cd ${.CURDIR}/gnu/usr.bin/cc/libgcc && \
31715603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3188295Srgrimes.endif
3192160Scsgr.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
3202160Scsgr	cd ${.CURDIR}/secure/lib && \
32115603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3222160Scsgr.endif
3232279Spaul.if exists(lib)
3244054Spst	cd ${.CURDIR}/lib/csu/i386 && \
32515603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3262061Sjkh	cd ${.CURDIR}/lib && \
32715603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3282279Spaul.endif
32911772Snate.if exists(usr.sbin/lex/lib)
3302468Spaul	cd ${.CURDIR}/usr.bin/lex/lib && \
33115603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
33211772Snate.endif
3333197Scsgr.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
33410838Sjkh	cd ${.CURDIR}/eBones/lib && \
33515603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3362626Scsgr.endif
3378304Srgrimes.if exists(usr.sbin/pcvt/keycap)
3388304Srgrimes	cd ${.CURDIR}/usr.sbin/pcvt/keycap && \
33915603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3408304Srgrimes.endif
3412061Sjkh
34213725Snateinclude-tools:
34313725Snate	@echo "--------------------------------------------------------------"
34413725Snate	@echo " Rebuild tools necessary to build the include files"
34513725Snate	@echo "--------------------------------------------------------------"
34613725Snate	@echo
34713726Snate	cd ${.CURDIR}/usr.bin/xinstall && \
34815603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
34913725Snate	cd ${.CURDIR}/usr.bin/rpcgen && \
35015603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
35113725Snate
35211806Sphkbuild-tools:
3532061Sjkh	@echo "--------------------------------------------------------------"
35412106Sjfieber	@echo " Rebuilding ${DESTDIR} C compiler, make, symorder, sgmlfmt and zic(8)"
3552061Sjkh	@echo "--------------------------------------------------------------"
3562061Sjkh	@echo
3572273Spaul	cd ${.CURDIR}/gnu/usr.bin/cc && \
35815603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3592061Sjkh	cd ${.CURDIR}/usr.bin/make && \
36015603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
36111769Sphk	cd ${.CURDIR}/usr.bin/symorder && \
36215603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
36312106Sjfieber	cd ${.CURDIR}/usr.bin/sgmlfmt && \
36415603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR} 
36512106Sjfieber	cd ${.CURDIR}/share/sgml && \
36615603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR} 
36710479Sdg	cd ${.CURDIR}/usr.sbin/zic && \
36815603Smarkm		${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
3692061Sjkh
3701594Srgrimes.include <bsd.subdir.mk>
371