Makefile revision 1.62
11.62Sapb# $NetBSD: Makefile,v 1.62 2008/10/19 22:05:20 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.62Sapb AWK=${TOOL_AWK:Q} \ 161.49Sapb CKSUM=${TOOL_CKSUM:Q} \ 171.49Sapb DB=${TOOL_DB:Q} \ 181.49Sapb HOST_SH=${HOST_SH:Q} \ 191.49Sapb MAKE=${MAKE:Q} \ 201.49Sapb MKTEMP=${TOOL_MKTEMP:Q} \ 211.49Sapb MTREE=${TOOL_MTREE:Q} \ 221.49Sapb PAX=${TOOL_PAX:Q} \ 231.49Sapb TSORT=${TSORT:Q} \ 241.43Slukem ${HOST_SH} 251.30Stron 261.57SlukemMAKETARS_FLAGS= 271.60Slukem.if ${MKX11} != "no" || ${MKXORG} != "no" 281.40SlukemMAKEFLIST_FLAGS= -b 291.48SjmcMAKESRCTARS_FLAGS= -x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc 301.40Slukem.else 311.40SlukemMAKEFLIST_FLAGS= 321.48SjmcMAKESRCTARS_FLAGS= -N ${NETBSDSRCDIR}/etc 331.40Slukem.endif 341.40Slukem 351.57Slukem.if ${MAKEVERBOSE} != 2 361.57SlukemMAKETARS_FLAGS+= -q 371.57SlukemMAKESRCTARS_FLAGS+= -q 381.57Slukem.endif 391.57Slukem 401.33Sjmc.if !defined(MAKETARSETS) 411.43SlukemMAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS} 421.33Sjmc.endif 431.33Sjmc 441.52Smrgprint_have_gcc: .PHONY 451.52Smrg @echo ${HAVE_GCC} 461.6Slukem 471.3Sthorpejprint_machine: .PHONY 481.3Sthorpej @echo ${MACHINE} 491.3Sthorpej 501.3Sthorpejprint_machine_arch: .PHONY 511.3Sthorpej @echo ${MACHINE_ARCH} 521.3Sthorpej 531.3Sthorpejprint_machine_cpu: .PHONY 541.3Sthorpej @echo ${MACHINE_CPU} 551.3Sthorpej 561.3Sthorpejprint_object_fmt: .PHONY 571.3Sthorpej @echo ${OBJECT_FMT} 581.3Sthorpej 591.17Slukemprint_toolchain_missing: .PHONY 601.17Slukem @echo "${TOOLCHAIN_MISSING}" 611.29Smrg 621.3Sthorpej# This target has debugging value only, really. 631.44Sheasmakeflist: .PHONY .PRECIOUS check_DESTDIR 641.43Slukem ${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS} 651.3Sthorpej 661.1Sthorpej# 671.1Sthorpej# SET BUILDING TARGETS 681.1Sthorpej# 691.1Sthorpej 701.46SclTARDIR= ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets 711.43SlukemSOURCETARDIR= ${RELEASEDIR}/source/sets 721.43Slukem 731.27Slukem.if ${MKUNPRIVED} == "no" 741.27SlukemMETALOG.unpriv= 751.49SapbMETALOG.sanitised.unpriv= 761.27Slukem.else 771.27SlukemMETALOG.unpriv= -M ${METALOG} 781.49SapbMETALOG.sanitised= ${METALOG}.sanitised 791.49SapbMETALOG.sanitised.unpriv= -M ${METALOG.sanitised} 801.27Slukem.endif 811.27Slukem 821.49Sapb.if ${MKUNPRIVED} == "no" 831.49Sapbsanitise_METALOG: .PHONY 841.49Sapb @true 851.49Sapb.else 861.49Sapbsanitise_METALOG: .PHONY ${METALOG.sanitised} 871.49Sapb${METALOG.sanitised}: ${METALOG} 881.51Sapb ( cat ${NETBSDSRCDIR}/etc/mtree/NetBSD.dist ; \ 891.51Sapb echo '/unset all' ; \ 901.51Sapb cat ${METALOG} ) \ 911.54She | ${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc > ${METALOG}.new && \ 921.54She ( rm -f ${METALOG} ; \ 931.54She mv ${METALOG}.new ${METALOG} ) 941.54She cat ${METALOG} | ${GREP} -v " optional" > ${.TARGET} 951.49Sapb.endif 961.49Sapb 971.49Sapb.if defined(DESTDIR) && ${DESTDIR} != "" 981.49Sapbcheckflist_if_DESTDIR: checkflist 991.49Sapb.else 1001.49Sapbcheckflist_if_DESTDIR: 1011.49Sapb.endif 1021.43Slukem 1031.49Sapbcheckflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG 1041.49Sapb ${SETSCMD} ${.CURDIR}/checkflist \ 1051.49Sapb ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv} 1061.4Smrg 1071.41Slukemcheckflist-x11: .PHONY check_DESTDIR 1081.43Slukem ${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS} 1091.43Slukem 1101.1Sthorpej 1111.58Sapb# If MAKETARS_SERIAL is set to "YES" or "yes", then the tar sets will be 1121.58Sapb# made in series, even if make's "-j" flag requests multiple parallel 1131.58Sapb# jobs. This is useful on systems that exhibit poor performance when 1141.58Sapb# running multiple parallel disk-intensive operations. The default is 1151.58Sapb# MAKETARS_SERIAL=NO, which will obey the "-j" flag passed to the make 1161.58Sapb# command. 1171.58Sapb# 1181.58SapbMAKETARS_SERIAL?= NO 1191.58Sapb.if empty(MAKETARS_SERIAL:M[Yy][Ee][Ss]) 1201.58Sapb_MAKETARS_WAIT= # empty 1211.58Sapb.else 1221.58Sapb_MAKETARS_WAIT= .WAIT 1231.58Sapb.endif 1241.58Sapb 1251.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 1261.49Sapb sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 1271.58Sapb maketarsetup .WAIT \ 1281.58Sapb ${MAKETARSETS:@.TARS.@${_MAKETARS_WAIT} do-${.TARS.}@} 1291.33Sjmc @true 1301.33Sjmc 1311.43Slukemmaketarsetup: .EXEC 1321.23Sveego.if defined(DESTDIR) && ${DESTDIR} != "" 1331.43Slukem ${_MKMSG} "execute checkflist" 1341.32Slukem ${MAKE} checkflist 1351.16Slukem.endif 1361.43Slukem mkdir -p ${TARDIR} 1371.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1381.43Slukem rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 1391.43Slukem done 1401.43Slukem 1411.43Slukemmakesetfiles: .PHONY 1421.43Slukem ${_MKMSG_CREATE} "set lists" 1431.43Slukem ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 1441.57Slukem ${MAKETARS_FLAGS} \ 1451.43Slukem -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 1461.43Slukem 1471.33Sjmc.for tar in ${MAKETARSETS} 1481.55Sapbdo-${tar}: .PHONY sanitise_METALOG 1491.57Slukem ${_MKMSG_CREATE} "${tar}.tgz" 1501.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1511.55Sapb ${METALOG.sanitised.unpriv} \ 1521.43Slukem -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 1531.43Slukem || rm -f ${TARDIR}/${tar}.tgz 1541.33Sjmc.endfor 1551.1Sthorpej 1561.43Slukem 1571.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR 1581.57Slukem ${_MKMSG_CREATE} "source tar files" 1591.43Slukem mkdir -p ${SOURCETARDIR} 1601.45Slukem ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 1611.45Slukem ${NETBSDSRCDIR} ${SOURCETARDIR} 1621.43Slukem 1631.25Slukem 1641.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 1651.41Slukem ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1661.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1671.43Slukem mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 1681.43Slukem done 1691.33Sjmc 1701.33Sjmc.for tar in ${MAKETARSETS} 1711.39Sjmcdo-sum-${tar}: .PHONY do-${tar} 1721.57Slukem ${_MKMSG_CREATE} "${tar} checksums" 1731.43Slukem ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 1741.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1751.43Slukem ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 1761.35Sjmc done 1771.33Sjmc.endfor 1781.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1791.18Slukem 1801.43Slukem 1811.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG 1821.18Slukem.if !defined(INSTALLDIR) 1831.18Slukem @echo "setenv INSTALLDIR before doing that!" 1841.18Slukem @false 1851.18Slukem.endif 1861.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1871.49Sapb ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 1881.49Sapb ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 1891.49Sapb 1901.49Sapb# Should we ignore errors like extra or missing files in the flists? 1911.49SapbSLOPPY_FLIST?= NO 1921.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 1931.49SapbCHECKFLIST_FLAGS+= -e -m 1941.49SapbREGPKG.sloppy= -m 1951.49Sapb.endif 1961.1Sthorpej 1971.49Sapb.if ${MAKEVERBOSE} == 0 1981.49SapbREGPKG.verbose?= -q 1991.49Sapb.elif ${MAKEVERBOSE} == 1 2001.49SapbREGPKG.verbose?= 2011.49Sapb.else # MAKEVERBOSE == 2 2021.49SapbREGPKG.verbose?= -v 2031.49Sapb.endif 2041.49SapbREGPKG.force?= # -f, or empty 2051.49SapbREGPKG.cache?= -c # -c, or empty 2061.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 2071.49SapbSYSPKGSETS?= all 2081.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 2091.49Sapb sanitise_METALOG checkflist_if_DESTDIR 2101.59Smatt mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2111.49Sapb ${SETSCMD} ${.CURDIR}/regpkgset \ 2121.49Sapb ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 2131.49Sapb ${REGPKG.cache} ${REGPKG.update} \ 2141.49Sapb -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 2151.49Sapb -N ${NETBSDSRCDIR}/etc \ 2161.59Smatt -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs ${SYSPKGSETS} 2171.49Sapb 2181.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR 2191.59Smatt ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2201.43Slukem 2211.50Sapb# Update the "deps" file. 2221.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of 2231.50Sapb# just being created as necessary? 2241.50Sapbmakedeps: .PHONY 2251.50Sapb ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 2261.50Sapb 2271.1Sthorpej# 2281.1Sthorpej# MAIN ENTRY POINTS 2291.1Sthorpej# 2301.1Sthorpej 2311.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 2321.49Sapb @true 2331.49Sapb 2341.41Slukemsets: .PHONY maketars .WAIT makesums 2351.25Slukem @true 2361.25Slukem 2371.41Slukemsourcesets: .PHONY makesrctars 2381.1Sthorpej @true 2391.8Slukem 2401.8Slukem.include <bsd.sys.mk> 241