Makefile revision 1.50
11.50Sapb#	$NetBSD: Makefile,v 1.50 2006/01/04 15:11:07 apb 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.1Sthorpej
111.43SlukemSETSCMD=	cd ${.CURDIR} && \
121.43Slukem		DESTDIR=${DESTDIR:Q} \
131.6Slukem		MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
141.49Sapb		CKSUM=${TOOL_CKSUM:Q} \
151.49Sapb		DB=${TOOL_DB:Q} \
161.49Sapb		HOST_SH=${HOST_SH:Q} \
171.49Sapb		MAKE=${MAKE:Q} \
181.49Sapb		MKTEMP=${TOOL_MKTEMP:Q} \
191.49Sapb		MTREE=${TOOL_MTREE:Q} \
201.49Sapb		PAX=${TOOL_PAX:Q} \
211.49Sapb		TSORT=${TSORT:Q} \
221.43Slukem		${HOST_SH}
231.30Stron
241.40Slukem.if ${MKX11} != "no"
251.40SlukemMAKEFLIST_FLAGS=	-b
261.48SjmcMAKESRCTARS_FLAGS=	-x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc
271.40Slukem.else
281.40SlukemMAKEFLIST_FLAGS=
291.48SjmcMAKESRCTARS_FLAGS= 	-N ${NETBSDSRCDIR}/etc
301.40Slukem.endif
311.40Slukem
321.33Sjmc.if !defined(MAKETARSETS)
331.43SlukemMAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS}
341.33Sjmc.endif
351.33Sjmc
361.41Slukemprint_have_gcc3: .PHONY
371.30Stron	@echo ${HAVE_GCC3}
381.6Slukem
391.3Sthorpejprint_machine: .PHONY
401.3Sthorpej	@echo ${MACHINE}
411.3Sthorpej
421.3Sthorpejprint_machine_arch: .PHONY
431.3Sthorpej	@echo ${MACHINE_ARCH}
441.3Sthorpej
451.3Sthorpejprint_machine_cpu: .PHONY
461.3Sthorpej	@echo ${MACHINE_CPU}
471.3Sthorpej
481.3Sthorpejprint_object_fmt: .PHONY
491.3Sthorpej	@echo ${OBJECT_FMT}
501.3Sthorpej
511.17Slukemprint_toolchain_missing: .PHONY
521.17Slukem	@echo "${TOOLCHAIN_MISSING}"
531.29Smrg
541.29Smrgprint_use_tools_toolchain: .PHONY
551.29Smrg	@echo "${USE_TOOLS_TOOLCHAIN}"
561.5Stron
571.5Stronprint_x11_version: .PHONY
581.40Slukem	${HOST_SH} -c '. ${.CURDIR}/sets.subr; echo $$x11_version'
591.3Sthorpej
601.3Sthorpej# This target has debugging value only, really.
611.44Sheasmakeflist: .PHONY .PRECIOUS check_DESTDIR
621.43Slukem	${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS}
631.3Sthorpej
641.1Sthorpej#
651.1Sthorpej# SET BUILDING TARGETS
661.1Sthorpej#
671.1Sthorpej
681.46SclTARDIR=		${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets
691.43SlukemSOURCETARDIR=	${RELEASEDIR}/source/sets
701.43Slukem
711.27Slukem.if ${MKUNPRIVED} == "no"
721.27SlukemMETALOG.unpriv=
731.49SapbMETALOG.sanitised.unpriv=
741.27Slukem.else
751.27SlukemMETALOG.unpriv=	-M ${METALOG}
761.49SapbMETALOG.sanitised= ${METALOG}.sanitised
771.49SapbMETALOG.sanitised.unpriv= -M ${METALOG.sanitised}
781.27Slukem.endif
791.27Slukem
801.49Sapb.if ${MKUNPRIVED} == "no"
811.49Sapbsanitise_METALOG: .PHONY
821.49Sapb	@true
831.49Sapb.else
841.49Sapbsanitise_METALOG: .PHONY ${METALOG.sanitised}
851.49Sapb${METALOG.sanitised}: ${METALOG}
861.49Sapb	${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc <${METALOG} >${.TARGET}
871.49Sapb.endif
881.49Sapb
891.49Sapb.if defined(DESTDIR) && ${DESTDIR} != ""
901.49Sapbcheckflist_if_DESTDIR: checkflist
911.49Sapb.else
921.49Sapbcheckflist_if_DESTDIR:
931.49Sapb.endif
941.43Slukem
951.49Sapbcheckflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG
961.49Sapb	${SETSCMD} ${.CURDIR}/checkflist \
971.49Sapb	    ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv}
981.4Smrg
991.41Slukemcheckflist-x11: .PHONY check_DESTDIR
1001.43Slukem	${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS}
1011.43Slukem
1021.1Sthorpej
1031.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \
1041.49Sapb		sanitise_METALOG checkflist_if_DESTDIR .WAIT \
1051.41Slukem		maketarsetup .WAIT ${MAKETARSETS:@.TARS.@do-${.TARS.}@}
1061.33Sjmc	@true
1071.33Sjmc
1081.43Slukemmaketarsetup: .EXEC
1091.23Sveego.if defined(DESTDIR) && ${DESTDIR} != ""
1101.43Slukem	${_MKMSG} "execute  checkflist"
1111.32Slukem	${MAKE} checkflist
1121.16Slukem.endif
1131.43Slukem	mkdir -p ${TARDIR}
1141.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1151.43Slukem		rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \
1161.43Slukem	done
1171.43Slukem
1181.43Slukemmakesetfiles: .PHONY
1191.43Slukem	${_MKMSG_CREATE} "set lists"
1201.43Slukem	${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \
1211.43Slukem	    -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR}
1221.43Slukem
1231.33Sjmc.for tar in ${MAKETARSETS}
1241.39Sjmcdo-${tar}: .PHONY
1251.49Sapb	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \
1261.49Sapb	${METALOG.sanitised.unpriv} \
1271.43Slukem	    -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \
1281.43Slukem	|| rm -f ${TARDIR}/${tar}.tgz
1291.33Sjmc.endfor
1301.1Sthorpej
1311.43Slukem
1321.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR
1331.43Slukem	mkdir -p ${SOURCETARDIR}
1341.45Slukem	${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \
1351.45Slukem	    ${NETBSDSRCDIR} ${SOURCETARDIR}
1361.43Slukem
1371.25Slukem
1381.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \
1391.41Slukem		${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
1401.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1411.43Slukem		mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \
1421.43Slukem	done
1431.33Sjmc
1441.33Sjmc.for tar in ${MAKETARSETS}
1451.39Sjmcdo-sum-${tar}: .PHONY do-${tar}
1461.43Slukem	${MAKESUMS} -t ${TARDIR} ${tar}.tgz
1471.47Sjmc	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
1481.43Slukem		${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \
1491.35Sjmc	done
1501.33Sjmc.endfor
1511.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
1521.18Slukem
1531.43Slukem
1541.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG
1551.18Slukem.if !defined(INSTALLDIR)
1561.18Slukem	@echo "setenv INSTALLDIR before doing that!"
1571.18Slukem	@false
1581.18Slukem.endif
1591.43Slukem	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \
1601.49Sapb	    ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \
1611.49Sapb	    ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS}
1621.49Sapb
1631.49Sapb# Should we ignore errors like extra or missing files in the flists?
1641.49SapbSLOPPY_FLIST?= NO
1651.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss])
1661.49SapbCHECKFLIST_FLAGS+=	-e -m
1671.49SapbREGPKG.sloppy=		-m
1681.49Sapb.endif
1691.1Sthorpej
1701.49Sapb.if ${MAKEVERBOSE} == 0
1711.49SapbREGPKG.verbose?= -q
1721.49Sapb.elif ${MAKEVERBOSE} == 1
1731.49SapbREGPKG.verbose?=
1741.49Sapb.else	# MAKEVERBOSE == 2
1751.49SapbREGPKG.verbose?= -v
1761.49Sapb.endif
1771.49SapbREGPKG.force?=		# -f, or empty
1781.49SapbREGPKG.cache?= -c	# -c, or empty
1791.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/}
1801.49SapbSYSPKGSETS?= all
1811.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \
1821.49Sapb		sanitise_METALOG checkflist_if_DESTDIR
1831.49Sapb	mkdir -p ${RELEASEDIR}/${MACHINE}/binary/syspkgs
1841.49Sapb	${SETSCMD} ${.CURDIR}/regpkgset \
1851.49Sapb	    ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \
1861.49Sapb	    ${REGPKG.cache} ${REGPKG.update} \
1871.49Sapb	    -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \
1881.49Sapb	    -N ${NETBSDSRCDIR}/etc \
1891.49Sapb	    -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs ${SYSPKGSETS}
1901.49Sapb
1911.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR
1921.49Sapb	${MAKESUMS} -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs
1931.43Slukem
1941.50Sapb# Update the "deps" file.
1951.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of
1961.50Sapb# just being created as necessary?
1971.50Sapbmakedeps: .PHONY
1981.50Sapb	${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps
1991.50Sapb
2001.1Sthorpej#
2011.1Sthorpej# MAIN ENTRY POINTS
2021.1Sthorpej#
2031.1Sthorpej
2041.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums
2051.49Sapb	@true
2061.49Sapb
2071.41Slukemsets: .PHONY maketars .WAIT makesums
2081.25Slukem	@true
2091.25Slukem
2101.41Slukemsourcesets: .PHONY makesrctars
2111.1Sthorpej	@true
2121.8Slukem
2131.8Slukem.include <bsd.sys.mk>
214