Makefile revision 1.72
11.72Smatt# $NetBSD: Makefile,v 1.72 2003/10/19 03:35:30 matt Exp $ 21.1Stv 31.3Stv.include <bsd.own.mk> 41.3Stv 51.60Sthorpej.if ${TOOLCHAIN_MISSING} != "yes" 61.70Smrg. if ${USE_TOOLS_TOOLCHAIN} != "yes" 71.70SmrgTOOLCHAIN_BITS= binutils .WAIT gcc 81.70Smrg. else 91.70SmrgTOOLCHAIN_BITS= toolchain 101.70Smrg. endif 111.70SmrgTOOLCHAIN_BITS+= .WAIT dbsym mdsetimage 121.58Sthorpej# XXX Eventually, we want to be able to build dbsym and mdsetimage 131.58Sthorpej# XXX if EXTERNAL_TOOLCHAIN is set. 141.31Stv.endif 151.31Stv 161.16Stv# Dependencies in SUBDIR below ordered to maximize parallel ability. 171.50Slukem.if !defined(NOSUBDIR) # { 181.50Slukem 191.29StvSUBDIR= host-mkdep .WAIT compat .WAIT \ 201.57Schris binstall .WAIT mktemp .WAIT \ 211.62Sthorpej cap_mkdb crunchgen ctags gencat hexdump lint lint2 lorder \ 221.32Stv m4 makewhatis mkdep mtree rpcgen tsort uudecode \ 231.32Stv texinfo .WAIT \ 241.16Stv yacc .WAIT \ 251.16Stv lex .WAIT \ 261.32Stv ${TOOLCHAIN_BITS} \ 271.64Slukem asn1_compile cat cksum compile_et config db file installboot \ 281.65Stshiozak lint1 makefs menuc mklocale mkcsmapper mkesdb msgc pax \ 291.68Slukem pwd_mkdb stat sunlabel zic 301.39Stv 311.39Stv.if ${MKMAN} != "no" 321.39StvSUBDIR+= groff 331.39Stv.endif 341.22Stv 351.22Stv.if ${MKMAINTAINERTOOLS:Uno} != "no" 361.38StvSUBDIR+= autoconf gettext 371.72Smatt.endif 381.72Smatt 391.72Smatt.if ${MACHINE} == ibmnws 401.72SmattSUBDIR+= ibmnws-ncdcs 411.48Skleink.endif 421.48Skleink 431.48Skleink.if ${MACHINE} == prep 441.48SkleinkSUBDIR+= prep-mkbootimage 451.22Stv.endif 461.37Sgmcgarry 471.37Sgmcgarry.if (${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb") 481.37SgmcgarrySUBDIR+= mips-elf2ecoff 491.51Sbjh21.endif 501.51Sbjh21 511.51Sbjh21.if (${MACHINE} == "sparc" || ${MACHINE} == "sparc64") 521.51Sbjh21SUBDIR+= fgen 531.37Sgmcgarry.endif 541.37Sgmcgarry 551.50Slukem.endif # ! NOSUBDIR # } 561.17Stv 571.66Slukemcheck_MKTOOLS: .PHONY .NOTMAIN 581.19Sjmc.if ${MKTOOLS:Uyes} == "no" 591.17Stv @echo '*** WARNING: "MKTOOLS" is set to "no"; this will prevent building and' 601.17Stv @echo '*** updating your host toolchain. This should be used only as a' 611.17Stv @echo '*** temporary workaround for toolchain problems, as it will result' 621.23Swiz @echo '*** in version skew and build errors over time!' 631.18Sjmc.endif 641.17Stv 651.66Slukem.if ${MKTOOLS:Uyes} == "no" || ${USETOOLS} != "yes" # { 661.67Slukemrealall realdepend install: check_MKTOOLS 671.66Slukem 681.17Stv.for dir in ${SUBDIR:N.WAIT} 691.17Stvall-${dir} depend-${dir} dependall-${dir} install-${dir}: 701.17Stv @true 711.17Stv.endfor 721.66Slukem.endif # } 731.1Stv 741.1Stv.include <bsd.subdir.mk> 751.11Stv.include <bsd.obj.mk> 761.16Stv 771.66Slukem.if exists(PREVIOUSTOOLDIR) 781.66SlukemPREVIOUSTOOLDIR!= cat PREVIOUSTOOLDIR 791.66Slukem.else 801.66SlukemPREVIOUSTOOLDIR= 811.66Slukem.endif 821.66Slukem 831.66SlukemCLEANFILES+= PREVIOUSTOOLDIR 841.66Slukem 851.67Slukemrealall realdepend: 861.66Slukem.if (${PREVIOUSTOOLDIR} != ${TOOLDIR}) 871.66Slukem @echo "*** WARNING: TOOLDIR has moved?" 881.66Slukem @echo "*** PREVIOUSTOOLDIR '${PREVIOUSTOOLDIR}'" 891.66Slukem @echo "*** != TOOLDIR '${TOOLDIR}'" 901.66Slukem @echo "*** Cleaning mis-matched tools" 911.71Slukem ${_MKCMD}\ 921.66Slukem rm -f PREVIOUSTOOLDIR 931.66Slukem ${MAKE} cleandir 941.66Slukem.endif 951.66Slukem echo ${TOOLDIR} > PREVIOUSTOOLDIR 961.66Slukem 971.40Stv# For each .WAIT point, make sure the immediately preceding target is 981.40Stv# installed before building anything after that point. 991.36Spk# 1001.36Spk# We use the "internal" targets and dependencies generated by <bsd.subdir.mk> 1011.36Spk# to achieve this. These targets look like: 1021.36Spk# subdir-all: all-dir1 [.WAIT] all-dir2 etc.. 1031.36Spk# subdir-install: install-dir1 [.WAIT] install-dir2 etc.. 1041.36Spk# and so on for each element in ${TARGETS}, with .WAIT sources inserted at 1051.36Spk# places corresponding to the .WAITs in our $SUBDIR variable. 1061.36Spk# 1071.36Spk# Also, since we're now mixing `install' with `all' and `depend' targets 1081.36Spk# an order relationship between those in each individual subdirectory 1091.36Spk# must be established. 1101.36Spk# 1111.40Stv_deps:= 1121.40Stv_prev:= 1131.40Stv 1141.16Stv.for d in ${SUBDIR} 1151.16Stv_this:= ${d} 1161.40Stv 1171.16Stv.if ${_this} == ".WAIT" 1181.36Spk 1191.36Spk# setup dependency to apply to all/depend targets in the next group 1201.40Stv_deps:= ${_deps} ${_prev:S/^/install-/} 1211.40Stv 1221.40Stv# if we're building *only* individual targets (i.e. "dependall-yacc"), 1231.40Stv# make sure prerequisite tools build before installing 1241.40Stv.if !make(all) && !make(dependall) 1251.40Stvinstall-${_prev}: dependall-${_prev} 1261.40Stv.endif 1271.36Spk 1281.16Stv.else 1291.36Spk 1301.36Spk# order depend/all/install targets for ${d} subdir. Note the additional 1311.36Spk# .WAIT to achieve "closure" of the predecessor/successor relationships. 1321.36Spk.ORDER: depend-${d} all-${d} dependall-${d} .WAIT install-${d} 1331.40Stv 1341.40Stv# make all/depend-${d} dependent on list of install targets 1351.40Stvdepend-${d} all-${d} dependall-${d}: ${_deps} 1361.36Spk 1371.16Stv.endif 1381.40Stv 1391.40Stv# stash current name in case the next entry is .WAIT 1401.40Stv_prev:= ${d} 1411.16Stv.endfor 1421.69Stron 1431.69Stroncleandir: 1441.71Slukem ${_MKCMD}\ 1451.69Stron rm -f ${CLEANFILES} 146