Makefile revision 1.57
11.57Slukem#	$NetBSD: Makefile,v 1.57 2008/03/16 07:02:22 lukem Exp $
21.1Sthorpej
31.1Sthorpej# The `all' target must appear before bsd.own.mk is pulled in.
41.1Sthorpejall:
51.1Sthorpej	@echo "Please understand what you are doing, first."
61.1Sthorpej	@false
71.1Sthorpej
81.1Sthorpej.include <bsd.own.mk>
91.15Slukem.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
101.51SapbGREP?= grep
111.1Sthorpej
121.43SlukemSETSCMD=	cd ${.CURDIR} && \
131.43Slukem		DESTDIR=${DESTDIR:Q} \
141.6Slukem		MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
151.49Sapb		CKSUM=${TOOL_CKSUM:Q} \
161.49Sapb		DB=${TOOL_DB:Q} \
171.49Sapb		HOST_SH=${HOST_SH:Q} \
181.49Sapb		MAKE=${MAKE:Q} \
191.49Sapb		MKTEMP=${TOOL_MKTEMP:Q} \
201.49Sapb		MTREE=${TOOL_MTREE:Q} \
211.49Sapb		PAX=${TOOL_PAX:Q} \
221.49Sapb		TSORT=${TSORT:Q} \
231.43Slukem		${HOST_SH}
241.30Stron
251.57SlukemMAKETARS_FLAGS=
261.40Slukem.if ${MKX11} != "no"
271.40SlukemMAKEFLIST_FLAGS=	-b
281.48SjmcMAKESRCTARS_FLAGS=	-x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc
291.40Slukem.else
301.40SlukemMAKEFLIST_FLAGS=
311.48SjmcMAKESRCTARS_FLAGS= 	-N ${NETBSDSRCDIR}/etc
321.40Slukem.endif
331.40Slukem
341.57Slukem.if ${MAKEVERBOSE} != 2
351.57SlukemMAKETARS_FLAGS+=	-q
361.57SlukemMAKESRCTARS_FLAGS+= 	-q
371.57Slukem.endif
381.57Slukem
391.33Sjmc.if !defined(MAKETARSETS)
401.43SlukemMAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS}
411.33Sjmc.endif
421.33Sjmc
431.52Smrgprint_have_gcc: .PHONY
441.52Smrg	@echo ${HAVE_GCC}
451.6Slukem
461.3Sthorpejprint_machine: .PHONY
471.3Sthorpej	@echo ${MACHINE}
481.3Sthorpej
491.3Sthorpejprint_machine_arch: .PHONY
501.3Sthorpej	@echo ${MACHINE_ARCH}
511.3Sthorpej
521.3Sthorpejprint_machine_cpu: .PHONY
531.3Sthorpej	@echo ${MACHINE_CPU}
541.3Sthorpej
551.3Sthorpejprint_object_fmt: .PHONY
561.3Sthorpej	@echo ${OBJECT_FMT}
571.3Sthorpej
581.17Slukemprint_toolchain_missing: .PHONY
591.17Slukem	@echo "${TOOLCHAIN_MISSING}"
601.29Smrg
611.5Stronprint_x11_version: .PHONY
621.40Slukem	${HOST_SH} -c '. ${.CURDIR}/sets.subr; echo $$x11_version'
631.3Sthorpej
641.3Sthorpej# This target has debugging value only, really.
651.44Sheasmakeflist: .PHONY .PRECIOUS check_DESTDIR
661.43Slukem	${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS}
671.3Sthorpej
681.1Sthorpej#
691.1Sthorpej# SET BUILDING TARGETS
701.1Sthorpej#
711.1Sthorpej
721.46SclTARDIR=		${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets
731.43SlukemSOURCETARDIR=	${RELEASEDIR}/source/sets
741.43Slukem
751.27Slukem.if ${MKUNPRIVED} == "no"
761.27SlukemMETALOG.unpriv=
771.49SapbMETALOG.sanitised.unpriv=
781.27Slukem.else
791.27SlukemMETALOG.unpriv=	-M ${METALOG}
801.49SapbMETALOG.sanitised= ${METALOG}.sanitised
811.49SapbMETALOG.sanitised.unpriv= -M ${METALOG.sanitised}
821.27Slukem.endif
831.27Slukem
841.49Sapb.if ${MKUNPRIVED} == "no"
851.49Sapbsanitise_METALOG: .PHONY
861.49Sapb	@true
871.49Sapb.else
881.49Sapbsanitise_METALOG: .PHONY ${METALOG.sanitised}
891.49Sapb${METALOG.sanitised}: ${METALOG}
901.51Sapb	( cat ${NETBSDSRCDIR}/etc/mtree/NetBSD.dist ; \
911.51Sapb		echo '/unset all' ; \
921.51Sapb		cat ${METALOG} ) \
931.54She	| ${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc > ${METALOG}.new && \
941.54She		( rm -f ${METALOG} ; \
951.54She		mv ${METALOG}.new ${METALOG} )
961.54She	cat ${METALOG} | ${GREP} -v " optional" > ${.TARGET}
971.49Sapb.endif
981.49Sapb
991.49Sapb.if defined(DESTDIR) && ${DESTDIR} != ""
1001.49Sapbcheckflist_if_DESTDIR: checkflist
1011.49Sapb.else
1021.49Sapbcheckflist_if_DESTDIR:
1031.49Sapb.endif
1041.43Slukem
1051.49Sapbcheckflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG
1061.49Sapb	${SETSCMD} ${.CURDIR}/checkflist \
1071.49Sapb	    ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv}
1081.4Smrg
1091.41Slukemcheckflist-x11: .PHONY check_DESTDIR
1101.43Slukem	${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS}
1111.43Slukem
1121.1Sthorpej
1131.56Sapb# Note that the .WAIT inside the ${MAKETARSETS:@...} loop is not
1141.56Sapb# logically necessary, but many systems exhibit poor performance when
1151.56Sapb# running multiple parallel disk-intensive processes.
1161.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \
1171.49Sapb		sanitise_METALOG checkflist_if_DESTDIR .WAIT \
1181.56Sapb		maketarsetup .WAIT ${MAKETARSETS:@.TARS.@.WAIT do-${.TARS.}@}
1191.33Sjmc	@true
1201.33Sjmc
1211.43Slukemmaketarsetup: .EXEC
1221.23Sveego.if defined(DESTDIR) && ${DESTDIR} != ""
1231.43Slukem	${_MKMSG} "execute  checkflist"
1241.32Slukem	${MAKE} checkflist
1251.16Slukem.endif
1261.43Slukem	mkdir -p ${TARDIR}
1271.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1281.43Slukem		rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \
1291.43Slukem	done
1301.43Slukem
1311.43Slukemmakesetfiles: .PHONY
1321.43Slukem	${_MKMSG_CREATE} "set lists"
1331.43Slukem	${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \
1341.57Slukem	    ${MAKETARS_FLAGS} \
1351.43Slukem	    -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR}
1361.43Slukem
1371.33Sjmc.for tar in ${MAKETARSETS}
1381.55Sapbdo-${tar}: .PHONY sanitise_METALOG
1391.57Slukem	${_MKMSG_CREATE} "${tar}.tgz"
1401.57Slukem	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \
1411.55Sapb	    ${METALOG.sanitised.unpriv} \
1421.43Slukem	    -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \
1431.43Slukem	|| rm -f ${TARDIR}/${tar}.tgz
1441.33Sjmc.endfor
1451.1Sthorpej
1461.43Slukem
1471.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR
1481.57Slukem	${_MKMSG_CREATE} "source tar files"
1491.43Slukem	mkdir -p ${SOURCETARDIR}
1501.45Slukem	${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \
1511.45Slukem	    ${NETBSDSRCDIR} ${SOURCETARDIR}
1521.43Slukem
1531.25Slukem
1541.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \
1551.41Slukem		${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
1561.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1571.43Slukem		mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \
1581.43Slukem	done
1591.33Sjmc
1601.33Sjmc.for tar in ${MAKETARSETS}
1611.39Sjmcdo-sum-${tar}: .PHONY do-${tar}
1621.57Slukem	${_MKMSG_CREATE} "${tar} checksums"
1631.43Slukem	${MAKESUMS} -t ${TARDIR} ${tar}.tgz
1641.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1651.43Slukem		${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \
1661.35Sjmc	done
1671.33Sjmc.endfor
1681.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
1691.18Slukem
1701.43Slukem
1711.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG
1721.18Slukem.if !defined(INSTALLDIR)
1731.18Slukem	@echo "setenv INSTALLDIR before doing that!"
1741.18Slukem	@false
1751.18Slukem.endif
1761.57Slukem	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \
1771.49Sapb	    ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \
1781.49Sapb	    ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS}
1791.49Sapb
1801.49Sapb# Should we ignore errors like extra or missing files in the flists?
1811.49SapbSLOPPY_FLIST?= NO
1821.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss])
1831.49SapbCHECKFLIST_FLAGS+=	-e -m
1841.49SapbREGPKG.sloppy=		-m
1851.49Sapb.endif
1861.1Sthorpej
1871.49Sapb.if ${MAKEVERBOSE} == 0
1881.49SapbREGPKG.verbose?= -q
1891.49Sapb.elif ${MAKEVERBOSE} == 1
1901.49SapbREGPKG.verbose?=
1911.49Sapb.else	# MAKEVERBOSE == 2
1921.49SapbREGPKG.verbose?= -v
1931.49Sapb.endif
1941.49SapbREGPKG.force?=		# -f, or empty
1951.49SapbREGPKG.cache?= -c	# -c, or empty
1961.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/}
1971.49SapbSYSPKGSETS?= all
1981.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \
1991.49Sapb		sanitise_METALOG checkflist_if_DESTDIR
2001.49Sapb	mkdir -p ${RELEASEDIR}/${MACHINE}/binary/syspkgs
2011.49Sapb	${SETSCMD} ${.CURDIR}/regpkgset \
2021.49Sapb	    ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \
2031.49Sapb	    ${REGPKG.cache} ${REGPKG.update} \
2041.49Sapb	    -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \
2051.49Sapb	    -N ${NETBSDSRCDIR}/etc \
2061.49Sapb	    -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs ${SYSPKGSETS}
2071.49Sapb
2081.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR
2091.49Sapb	${MAKESUMS} -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs
2101.43Slukem
2111.50Sapb# Update the "deps" file.
2121.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of
2131.50Sapb# just being created as necessary?
2141.50Sapbmakedeps: .PHONY
2151.50Sapb	${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps
2161.50Sapb
2171.1Sthorpej#
2181.1Sthorpej# MAIN ENTRY POINTS
2191.1Sthorpej#
2201.1Sthorpej
2211.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums
2221.49Sapb	@true
2231.49Sapb
2241.41Slukemsets: .PHONY maketars .WAIT makesums
2251.25Slukem	@true
2261.25Slukem
2271.41Slukemsourcesets: .PHONY makesrctars
2281.1Sthorpej	@true
2291.8Slukem
2301.8Slukem.include <bsd.sys.mk>
231