Makefile revision 1.56
11.56Sapb# $NetBSD: Makefile,v 1.56 2007/03/10 20:34:57 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.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.40Slukem.if ${MKX11} != "no" 261.40SlukemMAKEFLIST_FLAGS= -b 271.48SjmcMAKESRCTARS_FLAGS= -x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc 281.40Slukem.else 291.40SlukemMAKEFLIST_FLAGS= 301.48SjmcMAKESRCTARS_FLAGS= -N ${NETBSDSRCDIR}/etc 311.40Slukem.endif 321.40Slukem 331.33Sjmc.if !defined(MAKETARSETS) 341.43SlukemMAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS} 351.33Sjmc.endif 361.33Sjmc 371.52Smrgprint_have_gcc: .PHONY 381.52Smrg @echo ${HAVE_GCC} 391.6Slukem 401.3Sthorpejprint_machine: .PHONY 411.3Sthorpej @echo ${MACHINE} 421.3Sthorpej 431.3Sthorpejprint_machine_arch: .PHONY 441.3Sthorpej @echo ${MACHINE_ARCH} 451.3Sthorpej 461.3Sthorpejprint_machine_cpu: .PHONY 471.3Sthorpej @echo ${MACHINE_CPU} 481.3Sthorpej 491.3Sthorpejprint_object_fmt: .PHONY 501.3Sthorpej @echo ${OBJECT_FMT} 511.3Sthorpej 521.17Slukemprint_toolchain_missing: .PHONY 531.17Slukem @echo "${TOOLCHAIN_MISSING}" 541.29Smrg 551.5Stronprint_x11_version: .PHONY 561.40Slukem ${HOST_SH} -c '. ${.CURDIR}/sets.subr; echo $$x11_version' 571.3Sthorpej 581.3Sthorpej# This target has debugging value only, really. 591.44Sheasmakeflist: .PHONY .PRECIOUS check_DESTDIR 601.43Slukem ${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS} 611.3Sthorpej 621.1Sthorpej# 631.1Sthorpej# SET BUILDING TARGETS 641.1Sthorpej# 651.1Sthorpej 661.46SclTARDIR= ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets 671.43SlukemSOURCETARDIR= ${RELEASEDIR}/source/sets 681.43Slukem 691.27Slukem.if ${MKUNPRIVED} == "no" 701.27SlukemMETALOG.unpriv= 711.49SapbMETALOG.sanitised.unpriv= 721.27Slukem.else 731.27SlukemMETALOG.unpriv= -M ${METALOG} 741.49SapbMETALOG.sanitised= ${METALOG}.sanitised 751.49SapbMETALOG.sanitised.unpriv= -M ${METALOG.sanitised} 761.27Slukem.endif 771.27Slukem 781.49Sapb.if ${MKUNPRIVED} == "no" 791.49Sapbsanitise_METALOG: .PHONY 801.49Sapb @true 811.49Sapb.else 821.49Sapbsanitise_METALOG: .PHONY ${METALOG.sanitised} 831.49Sapb${METALOG.sanitised}: ${METALOG} 841.51Sapb ( cat ${NETBSDSRCDIR}/etc/mtree/NetBSD.dist ; \ 851.51Sapb echo '/unset all' ; \ 861.51Sapb cat ${METALOG} ) \ 871.54She | ${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc > ${METALOG}.new && \ 881.54She ( rm -f ${METALOG} ; \ 891.54She mv ${METALOG}.new ${METALOG} ) 901.54She cat ${METALOG} | ${GREP} -v " optional" > ${.TARGET} 911.49Sapb.endif 921.49Sapb 931.49Sapb.if defined(DESTDIR) && ${DESTDIR} != "" 941.49Sapbcheckflist_if_DESTDIR: checkflist 951.49Sapb.else 961.49Sapbcheckflist_if_DESTDIR: 971.49Sapb.endif 981.43Slukem 991.49Sapbcheckflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG 1001.49Sapb ${SETSCMD} ${.CURDIR}/checkflist \ 1011.49Sapb ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv} 1021.4Smrg 1031.41Slukemcheckflist-x11: .PHONY check_DESTDIR 1041.43Slukem ${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS} 1051.43Slukem 1061.1Sthorpej 1071.56Sapb# Note that the .WAIT inside the ${MAKETARSETS:@...} loop is not 1081.56Sapb# logically necessary, but many systems exhibit poor performance when 1091.56Sapb# running multiple parallel disk-intensive processes. 1101.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 1111.49Sapb sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 1121.56Sapb maketarsetup .WAIT ${MAKETARSETS:@.TARS.@.WAIT do-${.TARS.}@} 1131.33Sjmc @true 1141.33Sjmc 1151.43Slukemmaketarsetup: .EXEC 1161.23Sveego.if defined(DESTDIR) && ${DESTDIR} != "" 1171.43Slukem ${_MKMSG} "execute checkflist" 1181.32Slukem ${MAKE} checkflist 1191.16Slukem.endif 1201.43Slukem mkdir -p ${TARDIR} 1211.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1221.43Slukem rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 1231.43Slukem done 1241.43Slukem 1251.43Slukemmakesetfiles: .PHONY 1261.43Slukem ${_MKMSG_CREATE} "set lists" 1271.43Slukem ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 1281.43Slukem -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 1291.43Slukem 1301.33Sjmc.for tar in ${MAKETARSETS} 1311.55Sapbdo-${tar}: .PHONY sanitise_METALOG 1321.49Sapb ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \ 1331.55Sapb ${METALOG.sanitised.unpriv} \ 1341.43Slukem -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 1351.43Slukem || rm -f ${TARDIR}/${tar}.tgz 1361.33Sjmc.endfor 1371.1Sthorpej 1381.43Slukem 1391.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR 1401.43Slukem mkdir -p ${SOURCETARDIR} 1411.45Slukem ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 1421.45Slukem ${NETBSDSRCDIR} ${SOURCETARDIR} 1431.43Slukem 1441.25Slukem 1451.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 1461.41Slukem ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1471.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1481.43Slukem mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 1491.43Slukem done 1501.33Sjmc 1511.33Sjmc.for tar in ${MAKETARSETS} 1521.39Sjmcdo-sum-${tar}: .PHONY do-${tar} 1531.43Slukem ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 1541.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1551.43Slukem ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 1561.35Sjmc done 1571.33Sjmc.endfor 1581.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1591.18Slukem 1601.43Slukem 1611.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG 1621.18Slukem.if !defined(INSTALLDIR) 1631.18Slukem @echo "setenv INSTALLDIR before doing that!" 1641.18Slukem @false 1651.18Slukem.endif 1661.43Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \ 1671.49Sapb ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 1681.49Sapb ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 1691.49Sapb 1701.49Sapb# Should we ignore errors like extra or missing files in the flists? 1711.49SapbSLOPPY_FLIST?= NO 1721.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 1731.49SapbCHECKFLIST_FLAGS+= -e -m 1741.49SapbREGPKG.sloppy= -m 1751.49Sapb.endif 1761.1Sthorpej 1771.49Sapb.if ${MAKEVERBOSE} == 0 1781.49SapbREGPKG.verbose?= -q 1791.49Sapb.elif ${MAKEVERBOSE} == 1 1801.49SapbREGPKG.verbose?= 1811.49Sapb.else # MAKEVERBOSE == 2 1821.49SapbREGPKG.verbose?= -v 1831.49Sapb.endif 1841.49SapbREGPKG.force?= # -f, or empty 1851.49SapbREGPKG.cache?= -c # -c, or empty 1861.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 1871.49SapbSYSPKGSETS?= all 1881.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 1891.49Sapb sanitise_METALOG checkflist_if_DESTDIR 1901.49Sapb mkdir -p ${RELEASEDIR}/${MACHINE}/binary/syspkgs 1911.49Sapb ${SETSCMD} ${.CURDIR}/regpkgset \ 1921.49Sapb ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 1931.49Sapb ${REGPKG.cache} ${REGPKG.update} \ 1941.49Sapb -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 1951.49Sapb -N ${NETBSDSRCDIR}/etc \ 1961.49Sapb -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs ${SYSPKGSETS} 1971.49Sapb 1981.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR 1991.49Sapb ${MAKESUMS} -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs 2001.43Slukem 2011.50Sapb# Update the "deps" file. 2021.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of 2031.50Sapb# just being created as necessary? 2041.50Sapbmakedeps: .PHONY 2051.50Sapb ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 2061.50Sapb 2071.1Sthorpej# 2081.1Sthorpej# MAIN ENTRY POINTS 2091.1Sthorpej# 2101.1Sthorpej 2111.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 2121.49Sapb @true 2131.49Sapb 2141.41Slukemsets: .PHONY maketars .WAIT makesums 2151.25Slukem @true 2161.25Slukem 2171.41Slukemsourcesets: .PHONY makesrctars 2181.1Sthorpej @true 2191.8Slukem 2201.8Slukem.include <bsd.sys.mk> 221