Makefile revision 1.96
11.96Smrg# $NetBSD: Makefile,v 1.96 2006/05/11 01:15:32 mrg Exp $ 21.1Stv 31.3Stv.include <bsd.own.mk> 41.3Stv 51.96Smrg.if ${HAVE_GCC} == "4" 61.94SjmcTOOLCHAIN_BITS= gmake .WAIT 71.94Sjmc.endif 81.81Slukem.if ${TOOLCHAIN_MISSING} == "no" 91.94SjmcTOOLCHAIN_BITS+= binutils .WAIT 101.70Smrg. if ${USE_TOOLS_TOOLCHAIN} != "yes" 111.77SmrgTOOLCHAIN_BITS+= gcc 121.74Scl. if ${MKCROSSGDB:Uno} != "no" 131.74SclTOOLCHAIN_BITS+= gdb 141.74Scl. endif 151.70Smrg. else 161.77SmrgTOOLCHAIN_BITS+= toolchain 171.70Smrg. endif 181.70SmrgTOOLCHAIN_BITS+= .WAIT dbsym mdsetimage 191.58Sthorpej# XXX Eventually, we want to be able to build dbsym and mdsetimage 201.58Sthorpej# XXX if EXTERNAL_TOOLCHAIN is set. 211.31Stv.endif 221.31Stv 231.16Stv# Dependencies in SUBDIR below ordered to maximize parallel ability. 241.50Slukem.if !defined(NOSUBDIR) # { 251.50Slukem 261.29StvSUBDIR= host-mkdep .WAIT compat .WAIT \ 271.57Schris binstall .WAIT mktemp .WAIT \ 281.89Sthorpej cap_mkdb crunchgen ctags genassym gencat hexdump lint lint2 \ 291.89Sthorpej lorder m4 makewhatis mkdep mtree rpcgen tsort uudecode \ 301.32Stv texinfo .WAIT \ 311.16Stv yacc .WAIT \ 321.16Stv lex .WAIT \ 331.32Stv ${TOOLCHAIN_BITS} \ 341.90Sdyoung asn1_compile cat cksum compile_et config db \ 351.91Sdyoung file lint1 \ 361.90Sdyoung makefs menuc mkcsmapper mkesdb mklocale mknod msgc \ 371.90Sdyoung pax .WAIT \ 381.92Sjmc disklabel .WAIT \ 391.92Sjmc fdisk .WAIT \ 401.92Sjmc installboot .WAIT \ 411.68Slukem pwd_mkdb stat sunlabel zic 421.39Stv 431.39Stv.if ${MKMAN} != "no" 441.39StvSUBDIR+= groff 451.39Stv.endif 461.22Stv 471.22Stv.if ${MKMAINTAINERTOOLS:Uno} != "no" 481.38StvSUBDIR+= autoconf gettext 491.72Smatt.endif 501.72Smatt 511.86Sjmc.if ${MACHINE} == "hp700" 521.83SskrllSUBDIR+= hp700-mkboot 531.83Sskrll.endif 541.83Sskrll 551.86Sjmc.if ${MACHINE} == "ibmnws" 561.72SmattSUBDIR+= ibmnws-ncdcs 571.79Smatt.endif 581.79Smatt 591.86Sjmc.if ${MACHINE} == "macppc" 601.79SmattSUBDIR+= macppc-fixcoff 611.48Skleink.endif 621.48Skleink 631.86Sjmc.if ${MACHINE} == "prep" 641.48SkleinkSUBDIR+= prep-mkbootimage 651.22Stv.endif 661.37Sgmcgarry 671.37Sgmcgarry.if (${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb") 681.37SgmcgarrySUBDIR+= mips-elf2ecoff 691.76Ssekiya.endif 701.76Ssekiya 711.76Ssekiya.if (${MACHINE} == "sgimips") 721.76SsekiyaSUBDIR+= sgivol 731.51Sbjh21.endif 741.51Sbjh21 751.82Sabs.if ${MACHINE} == "acorn32" 761.82SabsSUBDIR+= sparkcrc 771.82Sabs.endif 781.82Sabs 791.51Sbjh21.if (${MACHINE} == "sparc" || ${MACHINE} == "sparc64") 801.51Sbjh21SUBDIR+= fgen 811.37Sgmcgarry.endif 821.37Sgmcgarry 831.84Sjmc.if ${MACHINE} == "bebox" 841.84SjmcSUBDIR+= bebox-elf2pef 851.84SjmcSUBDIR+= bebox-mkbootimage 861.84Sjmc.endif 871.84Sjmc 881.85Sjmc.if ${MACHINE} == "amiga" 891.85SjmcSUBDIR+= amiga-elf2bb 901.85SjmcSUBDIR+= amiga-txlt 911.85Sjmc.endif 921.85Sjmc 931.86Sjmc.if ${MACHINE} == "hp300" 941.86SjmcSUBDIR+= hp300-mkboot 951.86Sjmc.endif 961.86Sjmc 971.50Slukem.endif # ! NOSUBDIR # } 981.17Stv 991.66Slukemcheck_MKTOOLS: .PHONY .NOTMAIN 1001.19Sjmc.if ${MKTOOLS:Uyes} == "no" 1011.17Stv @echo '*** WARNING: "MKTOOLS" is set to "no"; this will prevent building and' 1021.17Stv @echo '*** updating your host toolchain. This should be used only as a' 1031.17Stv @echo '*** temporary workaround for toolchain problems, as it will result' 1041.23Swiz @echo '*** in version skew and build errors over time!' 1051.18Sjmc.endif 1061.17Stv 1071.66Slukem.if ${MKTOOLS:Uyes} == "no" || ${USETOOLS} != "yes" # { 1081.67Slukemrealall realdepend install: check_MKTOOLS 1091.66Slukem 1101.17Stv.for dir in ${SUBDIR:N.WAIT} 1111.17Stvall-${dir} depend-${dir} dependall-${dir} install-${dir}: 1121.17Stv @true 1131.17Stv.endfor 1141.66Slukem.endif # } 1151.1Stv 1161.1Stv.include <bsd.subdir.mk> 1171.11Stv.include <bsd.obj.mk> 1181.16Stv 1191.66Slukem.if exists(PREVIOUSTOOLDIR) 1201.66SlukemPREVIOUSTOOLDIR!= cat PREVIOUSTOOLDIR 1211.66Slukem.else 1221.66SlukemPREVIOUSTOOLDIR= 1231.66Slukem.endif 1241.66Slukem 1251.66SlukemCLEANFILES+= PREVIOUSTOOLDIR 1261.66Slukem 1271.93Sdslrealall realdepend: .MAKE 1281.87Smycroft.if "${PREVIOUSTOOLDIR}" != "${TOOLDIR}" 1291.66Slukem @echo "*** WARNING: TOOLDIR has moved?" 1301.66Slukem @echo "*** PREVIOUSTOOLDIR '${PREVIOUSTOOLDIR}'" 1311.66Slukem @echo "*** != TOOLDIR '${TOOLDIR}'" 1321.66Slukem @echo "*** Cleaning mis-matched tools" 1331.66Slukem rm -f PREVIOUSTOOLDIR 1341.78Slukem (cd ${.CURDIR} && ${MAKE} cleandir) 1351.66Slukem.endif 1361.66Slukem echo ${TOOLDIR} > PREVIOUSTOOLDIR 1371.66Slukem 1381.40Stv# For each .WAIT point, make sure the immediately preceding target is 1391.40Stv# installed before building anything after that point. 1401.36Spk# 1411.36Spk# We use the "internal" targets and dependencies generated by <bsd.subdir.mk> 1421.36Spk# to achieve this. These targets look like: 1431.36Spk# subdir-all: all-dir1 [.WAIT] all-dir2 etc.. 1441.36Spk# subdir-install: install-dir1 [.WAIT] install-dir2 etc.. 1451.36Spk# and so on for each element in ${TARGETS}, with .WAIT sources inserted at 1461.36Spk# places corresponding to the .WAITs in our $SUBDIR variable. 1471.36Spk# 1481.36Spk# Also, since we're now mixing `install' with `all' and `depend' targets 1491.36Spk# an order relationship between those in each individual subdirectory 1501.36Spk# must be established. 1511.36Spk# 1521.40Stv_deps:= 1531.40Stv_prev:= 1541.40Stv 1551.16Stv.for d in ${SUBDIR} 1561.16Stv_this:= ${d} 1571.40Stv 1581.16Stv.if ${_this} == ".WAIT" 1591.36Spk 1601.36Spk# setup dependency to apply to all/depend targets in the next group 1611.40Stv_deps:= ${_deps} ${_prev:S/^/install-/} 1621.40Stv 1631.40Stv# if we're building *only* individual targets (i.e. "dependall-yacc"), 1641.40Stv# make sure prerequisite tools build before installing 1651.40Stv.if !make(all) && !make(dependall) 1661.40Stvinstall-${_prev}: dependall-${_prev} 1671.40Stv.endif 1681.36Spk 1691.16Stv.else 1701.36Spk 1711.36Spk# order depend/all/install targets for ${d} subdir. Note the additional 1721.36Spk# .WAIT to achieve "closure" of the predecessor/successor relationships. 1731.36Spk.ORDER: depend-${d} all-${d} dependall-${d} .WAIT install-${d} 1741.40Stv 1751.40Stv# make all/depend-${d} dependent on list of install targets 1761.40Stvdepend-${d} all-${d} dependall-${d}: ${_deps} 1771.36Spk 1781.16Stv.endif 1791.40Stv 1801.40Stv# stash current name in case the next entry is .WAIT 1811.40Stv_prev:= ${d} 1821.16Stv.endfor 1831.69Stron 1841.69Stroncleandir: 1851.69Stron rm -f ${CLEANFILES} 186