Makefile revision 1.63
11.63Sapb# $NetBSD: Makefile,v 1.63 2008/10/25 22:23:55 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.63Sapb SED=${TOOL_SED:Q} \ 241.49Sapb TSORT=${TSORT:Q} \ 251.43Slukem ${HOST_SH} 261.30Stron 271.57SlukemMAKETARS_FLAGS= 281.60Slukem.if ${MKX11} != "no" || ${MKXORG} != "no" 291.40SlukemMAKEFLIST_FLAGS= -b 301.48SjmcMAKESRCTARS_FLAGS= -x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc 311.40Slukem.else 321.40SlukemMAKEFLIST_FLAGS= 331.48SjmcMAKESRCTARS_FLAGS= -N ${NETBSDSRCDIR}/etc 341.40Slukem.endif 351.40Slukem 361.57Slukem.if ${MAKEVERBOSE} != 2 371.57SlukemMAKETARS_FLAGS+= -q 381.57SlukemMAKESRCTARS_FLAGS+= -q 391.57Slukem.endif 401.57Slukem 411.33Sjmc.if !defined(MAKETARSETS) 421.43SlukemMAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS} 431.33Sjmc.endif 441.33Sjmc 451.52Smrgprint_have_gcc: .PHONY 461.52Smrg @echo ${HAVE_GCC} 471.6Slukem 481.3Sthorpejprint_machine: .PHONY 491.3Sthorpej @echo ${MACHINE} 501.3Sthorpej 511.3Sthorpejprint_machine_arch: .PHONY 521.3Sthorpej @echo ${MACHINE_ARCH} 531.3Sthorpej 541.3Sthorpejprint_machine_cpu: .PHONY 551.3Sthorpej @echo ${MACHINE_CPU} 561.3Sthorpej 571.3Sthorpejprint_object_fmt: .PHONY 581.3Sthorpej @echo ${OBJECT_FMT} 591.3Sthorpej 601.17Slukemprint_toolchain_missing: .PHONY 611.17Slukem @echo "${TOOLCHAIN_MISSING}" 621.29Smrg 631.3Sthorpej# This target has debugging value only, really. 641.44Sheasmakeflist: .PHONY .PRECIOUS check_DESTDIR 651.43Slukem ${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS} 661.3Sthorpej 671.1Sthorpej# 681.1Sthorpej# SET BUILDING TARGETS 691.1Sthorpej# 701.1Sthorpej 711.46SclTARDIR= ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets 721.43SlukemSOURCETARDIR= ${RELEASEDIR}/source/sets 731.43Slukem 741.27Slukem.if ${MKUNPRIVED} == "no" 751.27SlukemMETALOG.unpriv= 761.49SapbMETALOG.sanitised.unpriv= 771.27Slukem.else 781.27SlukemMETALOG.unpriv= -M ${METALOG} 791.49SapbMETALOG.sanitised= ${METALOG}.sanitised 801.49SapbMETALOG.sanitised.unpriv= -M ${METALOG.sanitised} 811.27Slukem.endif 821.27Slukem 831.49Sapb.if ${MKUNPRIVED} == "no" 841.49Sapbsanitise_METALOG: .PHONY 851.49Sapb @true 861.49Sapb.else 871.49Sapbsanitise_METALOG: .PHONY ${METALOG.sanitised} 881.49Sapb${METALOG.sanitised}: ${METALOG} 891.51Sapb ( cat ${NETBSDSRCDIR}/etc/mtree/NetBSD.dist ; \ 901.51Sapb echo '/unset all' ; \ 911.51Sapb cat ${METALOG} ) \ 921.54She | ${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc > ${METALOG}.new && \ 931.54She ( rm -f ${METALOG} ; \ 941.54She mv ${METALOG}.new ${METALOG} ) 951.54She cat ${METALOG} | ${GREP} -v " optional" > ${.TARGET} 961.49Sapb.endif 971.49Sapb 981.49Sapb.if defined(DESTDIR) && ${DESTDIR} != "" 991.49Sapbcheckflist_if_DESTDIR: checkflist 1001.49Sapb.else 1011.49Sapbcheckflist_if_DESTDIR: 1021.49Sapb.endif 1031.43Slukem 1041.49Sapbcheckflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG 1051.49Sapb ${SETSCMD} ${.CURDIR}/checkflist \ 1061.49Sapb ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv} 1071.4Smrg 1081.41Slukemcheckflist-x11: .PHONY check_DESTDIR 1091.43Slukem ${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS} 1101.43Slukem 1111.1Sthorpej 1121.58Sapb# If MAKETARS_SERIAL is set to "YES" or "yes", then the tar sets will be 1131.58Sapb# made in series, even if make's "-j" flag requests multiple parallel 1141.58Sapb# jobs. This is useful on systems that exhibit poor performance when 1151.58Sapb# running multiple parallel disk-intensive operations. The default is 1161.58Sapb# MAKETARS_SERIAL=NO, which will obey the "-j" flag passed to the make 1171.58Sapb# command. 1181.58Sapb# 1191.58SapbMAKETARS_SERIAL?= NO 1201.58Sapb.if empty(MAKETARS_SERIAL:M[Yy][Ee][Ss]) 1211.58Sapb_MAKETARS_WAIT= # empty 1221.58Sapb.else 1231.58Sapb_MAKETARS_WAIT= .WAIT 1241.58Sapb.endif 1251.58Sapb 1261.49Sapbmaketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 1271.49Sapb sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 1281.58Sapb maketarsetup .WAIT \ 1291.58Sapb ${MAKETARSETS:@.TARS.@${_MAKETARS_WAIT} do-${.TARS.}@} 1301.33Sjmc @true 1311.33Sjmc 1321.43Slukemmaketarsetup: .EXEC 1331.23Sveego.if defined(DESTDIR) && ${DESTDIR} != "" 1341.43Slukem ${_MKMSG} "execute checkflist" 1351.32Slukem ${MAKE} checkflist 1361.16Slukem.endif 1371.43Slukem mkdir -p ${TARDIR} 1381.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1391.43Slukem rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 1401.43Slukem done 1411.43Slukem 1421.43Slukemmakesetfiles: .PHONY 1431.43Slukem ${_MKMSG_CREATE} "set lists" 1441.43Slukem ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 1451.57Slukem ${MAKETARS_FLAGS} \ 1461.43Slukem -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 1471.43Slukem 1481.33Sjmc.for tar in ${MAKETARSETS} 1491.55Sapbdo-${tar}: .PHONY sanitise_METALOG 1501.57Slukem ${_MKMSG_CREATE} "${tar}.tgz" 1511.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1521.55Sapb ${METALOG.sanitised.unpriv} \ 1531.43Slukem -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 1541.43Slukem || rm -f ${TARDIR}/${tar}.tgz 1551.33Sjmc.endfor 1561.1Sthorpej 1571.43Slukem 1581.41Slukemmakesrctars: .PRECIOUS .PHONY check_RELEASEDIR 1591.57Slukem ${_MKMSG_CREATE} "source tar files" 1601.43Slukem mkdir -p ${SOURCETARDIR} 1611.45Slukem ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 1621.45Slukem ${NETBSDSRCDIR} ${SOURCETARDIR} 1631.43Slukem 1641.25Slukem 1651.41Slukemmakesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 1661.41Slukem ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1671.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1681.43Slukem mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 1691.43Slukem done 1701.33Sjmc 1711.33Sjmc.for tar in ${MAKETARSETS} 1721.39Sjmcdo-sum-${tar}: .PHONY do-${tar} 1731.57Slukem ${_MKMSG_CREATE} "${tar} checksums" 1741.43Slukem ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 1751.47Sjmc for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 1761.43Slukem ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 1771.35Sjmc done 1781.33Sjmc.endfor 1791.37Sjmc.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 1801.18Slukem 1811.43Slukem 1821.49Sapbinstallsets: .PHONY check_DESTDIR sanitise_METALOG 1831.18Slukem.if !defined(INSTALLDIR) 1841.18Slukem @echo "setenv INSTALLDIR before doing that!" 1851.18Slukem @false 1861.18Slukem.endif 1871.57Slukem ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 1881.49Sapb ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 1891.49Sapb ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 1901.49Sapb 1911.49Sapb# Should we ignore errors like extra or missing files in the flists? 1921.49SapbSLOPPY_FLIST?= NO 1931.49Sapb.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 1941.49SapbCHECKFLIST_FLAGS+= -e -m 1951.49SapbREGPKG.sloppy= -m 1961.49Sapb.endif 1971.1Sthorpej 1981.49Sapb.if ${MAKEVERBOSE} == 0 1991.49SapbREGPKG.verbose?= -q 2001.49Sapb.elif ${MAKEVERBOSE} == 1 2011.49SapbREGPKG.verbose?= 2021.49Sapb.else # MAKEVERBOSE == 2 2031.49SapbREGPKG.verbose?= -v 2041.49Sapb.endif 2051.49SapbREGPKG.force?= # -f, or empty 2061.49SapbREGPKG.cache?= -c # -c, or empty 2071.49SapbREGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 2081.49SapbSYSPKGSETS?= all 2091.49Sapbmakesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 2101.49Sapb sanitise_METALOG checkflist_if_DESTDIR 2111.59Smatt mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2121.49Sapb ${SETSCMD} ${.CURDIR}/regpkgset \ 2131.49Sapb ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 2141.49Sapb ${REGPKG.cache} ${REGPKG.update} \ 2151.49Sapb -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 2161.49Sapb -N ${NETBSDSRCDIR}/etc \ 2171.59Smatt -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs ${SYSPKGSETS} 2181.49Sapb 2191.49Sapbmakesyspkgsums: .PHONY check_RELEASEDIR 2201.59Smatt ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 2211.43Slukem 2221.50Sapb# Update the "deps" file. 2231.50Sapb# XXX: Why is "deps" checked in to the source tree, instead of 2241.50Sapb# just being created as necessary? 2251.50Sapbmakedeps: .PHONY 2261.50Sapb ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 2271.50Sapb 2281.1Sthorpej# 2291.1Sthorpej# MAIN ENTRY POINTS 2301.1Sthorpej# 2311.1Sthorpej 2321.49Sapbsyspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 2331.49Sapb @true 2341.49Sapb 2351.41Slukemsets: .PHONY maketars .WAIT makesums 2361.25Slukem @true 2371.25Slukem 2381.41Slukemsourcesets: .PHONY makesrctars 2391.1Sthorpej @true 2401.8Slukem 2411.8Slukem.include <bsd.sys.mk> 242