Makefile revision 1.60
11.60Slukem# $NetBSD: Makefile,v 1.60 2008/08/28 07:21:49 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.60Slukem.if ${MKX11} != "no" || ${MKXORG} != "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.58Sapb# If MAKETARS_SERIAL is set to "YES" or "yes", then the tar sets will be 1141.58Sapb# made in series, even if make's "-j" flag requests multiple parallel 1151.58Sapb# jobs. This is useful on systems that exhibit poor performance when 1161.58Sapb# running multiple parallel disk-intensive operations. The default is 1171.58Sapb# MAKETARS_SERIAL=NO, which will obey the "-j" flag passed to the make 1181.58Sapb# command. 1191.58Sapb# 1201.58SapbMAKETARS_SERIAL?= NO 1211.58Sapb.if empty(MAKETARS_SERIAL:M[Yy][Ee][Ss]) 1221.58Sapb_MAKETARS_WAIT= # empty 1231.58Sapb.else 1241.58Sapb_MAKETARS_WAIT= .WAIT 1251.58Sapb.endif 1261.58Sapb 1271.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 1281.49Sapb sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 1291.58Sapb maketarsetup .WAIT \ 1301.58Sapb ${MAKETARSETS:@.TARS.@${_MAKETARS_WAIT} do-${.TARS.}@} 1311.33Sjmc @true 1321.33Sjmc 1331.43Slukemmaketarsetup: .EXEC 1341.23Sveego.if defined(DESTDIR) && ${DESTDIR} != "" 1351.43Slukem ${_MKMSG} "execute checkflist" 1361.32Slukem ${MAKE} checkflist 1371.16Slukem.endif 1381.43Slukem mkdir -p ${TARDIR} 1391.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1401.43Slukem rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 1411.43Slukem done 1421.43Slukem 1431.43Slukemmakesetfiles: .PHONY 1441.43Slukem ${_MKMSG_CREATE} "set lists" 1451.43Slukem ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 1461.57Slukem ${MAKETARS_FLAGS} \ 1471.43Slukem -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 1481.43Slukem 1491.33Sjmc.for tar in ${MAKETARSETS} 1501.55Sapbdo-${tar}: .PHONY sanitise_METALOG 1511.57Slukem ${_MKMSG_CREATE} "${tar}.tgz" 1521.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1531.55Sapb ${METALOG.sanitised.unpriv} \ 1541.43Slukem -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 1551.43Slukem || rm -f ${TARDIR}/${tar}.tgz 1561.33Sjmc.endfor 1571.1Sthorpej 1581.43Slukem 1591.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR 1601.57Slukem ${_MKMSG_CREATE} "source tar files" 1611.43Slukem mkdir -p ${SOURCETARDIR} 1621.45Slukem ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 1631.45Slukem ${NETBSDSRCDIR} ${SOURCETARDIR} 1641.43Slukem 1651.25Slukem 1661.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 1671.41Slukem ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1681.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1691.43Slukem mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 1701.43Slukem done 1711.33Sjmc 1721.33Sjmc.for tar in ${MAKETARSETS} 1731.39Sjmcdo-sum-${tar}: .PHONY do-${tar} 1741.57Slukem ${_MKMSG_CREATE} "${tar} checksums" 1751.43Slukem ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 1761.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1771.43Slukem ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 1781.35Sjmc done 1791.33Sjmc.endfor 1801.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1811.18Slukem 1821.43Slukem 1831.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG 1841.18Slukem.if !defined(INSTALLDIR) 1851.18Slukem @echo "setenv INSTALLDIR before doing that!" 1861.18Slukem @false 1871.18Slukem.endif 1881.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1891.49Sapb ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 1901.49Sapb ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 1911.49Sapb 1921.49Sapb# Should we ignore errors like extra or missing files in the flists? 1931.49SapbSLOPPY_FLIST?= NO 1941.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 1951.49SapbCHECKFLIST_FLAGS+= -e -m 1961.49SapbREGPKG.sloppy= -m 1971.49Sapb.endif 1981.1Sthorpej 1991.49Sapb.if ${MAKEVERBOSE} == 0 2001.49SapbREGPKG.verbose?= -q 2011.49Sapb.elif ${MAKEVERBOSE} == 1 2021.49SapbREGPKG.verbose?= 2031.49Sapb.else # MAKEVERBOSE == 2 2041.49SapbREGPKG.verbose?= -v 2051.49Sapb.endif 2061.49SapbREGPKG.force?= # -f, or empty 2071.49SapbREGPKG.cache?= -c # -c, or empty 2081.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 2091.49SapbSYSPKGSETS?= all 2101.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 2111.49Sapb sanitise_METALOG checkflist_if_DESTDIR 2121.59Smatt mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2131.49Sapb ${SETSCMD} ${.CURDIR}/regpkgset \ 2141.49Sapb ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 2151.49Sapb ${REGPKG.cache} ${REGPKG.update} \ 2161.49Sapb -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 2171.49Sapb -N ${NETBSDSRCDIR}/etc \ 2181.59Smatt -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs ${SYSPKGSETS} 2191.49Sapb 2201.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR 2211.59Smatt ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2221.43Slukem 2231.50Sapb# Update the "deps" file. 2241.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of 2251.50Sapb# just being created as necessary? 2261.50Sapbmakedeps: .PHONY 2271.50Sapb ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 2281.50Sapb 2291.1Sthorpej# 2301.1Sthorpej# MAIN ENTRY POINTS 2311.1Sthorpej# 2321.1Sthorpej 2331.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 2341.49Sapb @true 2351.49Sapb 2361.41Slukemsets: .PHONY maketars .WAIT makesums 2371.25Slukem @true 2381.25Slukem 2391.41Slukemsourcesets: .PHONY makesrctars 2401.1Sthorpej @true 2411.8Slukem 2421.8Slukem.include <bsd.sys.mk> 243