Makefile revision 2061
112657Skvn#
212995Siveresov#	$Id$
312657Skvn#
412657Skvn# Make command line options:
512657Skvn#	-DCLOBBER will remove /usr/include and MOST of /usr/lib 
612657Skvn#	-DMAKE_LOCAL to add ./local to the SUBDIR list
712657Skvn#	-DMAKE_PORTS to add ./ports to the SUBDIR list
812657Skvn#	-DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
912657Skvn# XXX1	-DNOCRYPT will prevent building of crypt versions (BROKEN RIGHT NOW)
1012657Skvn#	-DNOOBJDIR do not run ``${MAKE} obj''
1112657Skvn#	-DNOPROFILE do not build profiled libraries
1212657Skvn#
1312657Skvn# XXX1	This has not yet been implemented in FreeBSD 2.0.0, the only way
1412657Skvn#	to build the system is with full crypt and KerberosIV
1512657Skvn#
1612657Skvn
1712657Skvn# Put initial settings here.
1812657SkvnNOCRYPT=	yes
1912657SkvnSUBDIR=
2012657Skvn
2112657Skvn.if exists(bin)
2212657SkvnSUBDIR+= bin
2312657Skvn.endif
2412657Skvn.if exists(contrib)
2512657SkvnSUBDIR+= contrib
2612657Skvn.endif
2712657Skvn.if exists(etc)
2812657SkvnSUBDIR+= etc
2912657Skvn.endif
3012657Skvn.if exists(games)
3112657SkvnSUBDIR+= games
3212657Skvn.endif
3312657Skvn.if exists(gnu)
3412657SkvnSUBDIR+= gnu
3512657Skvn.endif
3612657Skvn.if exists(include)
3712657SkvnSUBDIR+= include
3812657Skvn.endif
3912657Skvn.if exists(lib)
4012657SkvnSUBDIR+= lib
4112657Skvn.endif
4212657Skvn.if exists(kerberosIV) && !defined(NOCRYPT)
4312657SkvnSUBDIR+= kerberosIV
4412657Skvn.endif
4512657Skvn.if exists(libexec)
4612657SkvnSUBDIR+= libexec
4712657Skvn.endif
4812657Skvn.if exists(sbin)
4912657SkvnSUBDIR+= sbin
5012657Skvn.endif
5112657Skvn.if exists(share)
5212657SkvnSUBDIR+= share
5312657Skvn.endif
5412657Skvn.if exists(sys)
5512657SkvnSUBDIR+= sys
5612657Skvn.endif
5712657Skvn.if exists(usr.bin)
5812657SkvnSUBDIR+= usr.bin
5912657Skvn.endif
6012657Skvn.if exists(usr.sbin)
6112657SkvnSUBDIR+= usr.sbin
6212657Skvn.endif
6312657Skvn
6412657Skvn# These are last, since it is nice to at least get the base system
6512657Skvn# rebuilt before you do them.
6612657Skvn.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
6712657SkvnSUBDIR+= local
6812657Skvn.endif
6912657Skvn.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
7012657SkvnSUBDIR+= ports
7112657Skvn.endif
7212657Skvn
7312657Skvn# Handle the -DNOOBJDIR and -DNOCLEANDIR
7412657Skvn.if defined(NOOBJDIR)
7512657SkvnOBJDIR=
7612657Skvn.else
7712657SkvnOBJDIR=		obj
7812657Skvn.endif
7912657Skvn.if defined(NOCLEANDIR)
8012657SkvnCLEANDIR=	clean
8112657Skvn.else 
8212657SkvnCLEANDIR=	cleandir
8312657Skvn.endif
8412657Skvn
8512657Skvnworld:	directories cleandist mk includes libraries tools mdec
8612657Skvn	@echo "--------------------------------------------------------------"
8712657Skvn	@echo " Rebuilding ${DESTDIR} The whole thing"
8812657Skvn	@echo "--------------------------------------------------------------"
8912657Skvn	@echo
9012657Skvn	${MAKE} depend all install
9112657Skvn	cd ${.CURDIR}/share/man &&		${MAKE} makedb
9212657Skvn
9312657Skvndirectories:
9412657Skvn	@echo "--------------------------------------------------------------"
9512657Skvn	@echo " Making directories"
9612657Skvn	@echo "--------------------------------------------------------------"
9712657Skvn	@echo " XXX Not yet ready in 2.0.0"
9812657Skvn# XXX	cd ${.CURDIR}/etc &&			${MAKE} distrib-dirs
9912657Skvn
10012657Skvncleandist:
10112657Skvn.if !defined(NOCLEANDIR)
10212657Skvn	@echo "--------------------------------------------------------------"
10312657Skvn	@echo " Cleaning up the source tree, and rebuilding the obj tree"
10412657Skvn	@echo "--------------------------------------------------------------"
10512657Skvn	@echo
10612657Skvn	here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
10712657Skvn	if test -d /usr/obj -a ! -d $$dest; then \
10812657Skvn		mkdir -p $$dest; \
10912657Skvn	else \
11012657Skvn		true; \
11112657Skvn	fi; \
11212657Skvn	cd $$dest && rm -rf ${SUBDIR}
11312657Skvn	find . -name obj | xargs rm -rf
11412657Skvn.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
11512657Skvn	# The cd is done as local may well be a symbolic link
11612657Skvn	-cd local && find . -name obj | xargs rm -rf
11712657Skvn.endif
11812657Skvn.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
11912657Skvn	# The cd is done as local may well be a symbolic link
12012657Skvn	-cd ports && find . -name obj | xargs rm -rf
12112657Skvn.endif
12212657Skvn	${MAKE} cleandir
12312657Skvn	${MAKE} obj
12412657Skvn.endif
12512657Skvn
12612657Skvnmk:
12712657Skvn	@echo "--------------------------------------------------------------"
12812657Skvn	@echo " Rebuilding ${DESTDIR}/usr/share/mk"
12912657Skvn	@echo "--------------------------------------------------------------"
13012657Skvn	cd ${.CURDIR}/share/mk &&		${MAKE} install
13112657Skvn
13212657Skvnincludes:
13312657Skvn	@echo "--------------------------------------------------------------"
13412657Skvn	@echo " Rebuilding ${DESTDIR}/usr/include"
13512657Skvn	@echo "--------------------------------------------------------------"
13612657Skvn	@echo
13712657Skvn.if defined(CLOBBER)
13812968Siveresov	rm -rf ${DESTDIR}/usr/include
13912968Siveresov	mkdir ${DESTDIR}/usr/include
14012657Skvn	chown ${BINOWN}.${BINGRP} ${DESTDIR}/usr/include
14112657Skvn	chmod 755 ${DESTDIR}/usr/include
14212657Skvn.endif
14312657Skvn	cd ${.CURDIR}/include &&		${MAKE} install
14412657Skvn	cd ${.CURDIR}/gnu/lib/libg++ &&		${MAKE} beforeinstall
14512657Skvn	cd ${.CURDIR}/gnu/usr.bin/cc/libobjc &&	${MAKE} beforeinstall
14612657Skvn.if !defined(NOCRYPT)
14712657Skvn	cd ${.CURDIR}/kerberosIV/include &&	${MAKE} install
14812657Skvn.endif
14912657Skvn	cd ${.CURDIR}/lib/libc &&		${MAKE} beforeinstall
15012657Skvn	cd ${.CURDIR}/lib/libcurses &&		${MAKE} beforeinstall
15112657Skvn	cd ${.CURDIR}/lib/libedit &&		${MAKE} beforeinstall
15212657Skvn	cd ${.CURDIR}/lib/librpcsvc &&		${MAKE} beforeinstall
15312657Skvn
15412657Skvnlibraries:
15512657Skvn	@echo "--------------------------------------------------------------"
15612657Skvn	@echo " Rebuilding ${DESTDIR}/usr/lib"
15712657Skvn	@echo "--------------------------------------------------------------"
15812657Skvn	@echo
15912657Skvn.if defined(CLOBBER)
16012657Skvn	find ${DESTDIR}/usr/lib \! -name '*.s[ao].*' -a \! -type d | \
16112657Skvn		xargs rm -rf
16212657Skvn.endif
16312657Skvn	# XXX The whole GNU block should be doable in one command, as soon		# as libg++ works on FreeBSD 2.0 I will try that out
16412657Skvn#XXX	cd ${.CURDIR}/gnu/lib/libg++ && \
16512657Skvn#XXX		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
16612657Skvn	cd ${.CURDIR}/gnu/lib/libmalloc && \
16712657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
16812657Skvn	cd ${.CURDIR}/gnu/lib/libreadline && \
16912657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
17012657Skvn	cd ${.CURDIR}/gnu/lib/libregex && \
17112657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
17212657Skvn	cd ${.CURDIR}/gnu/usr.bin/cc/libgcc && \
17312657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
17412657Skvn	cd ${.CURDIR}/lib && \
17512657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
17612657Skvn	# You need the lex lib before you can build kerberosIV
17712657Skvn#XXX	# We don't have lex in the 2.0 tree yet!
17812657Skvn#XXX	cd ${.CURDIR}/usr.bin/lex/lib && \
17912657Skvn#XXX		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
18012657Skvn.if !defined(NOCRYPT)
18112657Skvn	cd ${.CURDIR}/kerberosIV/acl && \
18212657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
18312657Skvn	cd ${.CURDIR}/kerberosIV/des && \
18412657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
18512657Skvn	cd ${.CURDIR}/kerberosIV/kdb && \
18612657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
18712657Skvn	cd ${.CURDIR}/kerberosIV/krb && \
18812657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
18912657Skvn.endif
19012657Skvn
19112657Skvntools:
19212657Skvn	@echo "--------------------------------------------------------------"
19312657Skvn	@echo " Rebuilding ${DESTDIR} Compiler and Make"
19412657Skvn	@echo "--------------------------------------------------------------"
19512657Skvn	@echo
19612657Skvn	cd ${.CURDIR}/gnu/usr.bin/cc && \
19712657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
19812657Skvn	cd ${.CURDIR}/usr.bin/make && \
19912657Skvn		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
20012657Skvn
20112657Skvnmdec:
20212657Skvn	@echo "--------------------------------------------------------------"
20312657Skvn	@echo " Rebuilding ${DESTDIR}/usr/mdec"
20412657Skvn	@echo "--------------------------------------------------------------"
20512657Skvn	@echo
20612657Skvn	@echo " XXX Not yet ready in 2.0.0"
20712657Skvn#XXX.if ${MACHINE} == "i386"
20812657Skvn#XXX	# XXX Need to fix for obj case, src/sys/Makefile needs to be fixed to
20912657Skvn#XXX	# traverse down into here and this can go away!
21012657Skvn#XXX	cd ${.CURDIR}/sys/i386/boot &&	${MAKE} depend all install ${CLEANDIR}
21112657Skvn#XXX.if defined (DESTDIR)
21212657Skvn#XXX	# XXX Really need to fix the sys/i386/boot Makefile so this is not
21312657Skvn#XXX	# necessary!!!
21412657Skvn#XXX	cd /usr/mdec && find . | cpio -pdamuv ${DESTDIR}/usr/mdec
21512657Skvn#XXX.endif
21612657Skvn#XXX.endif
21712657Skvn
21812657Skvn.include <bsd.subdir.mk>
21912657Skvn