Makefile revision 1.164
11.164Sapb# $NetBSD: Makefile,v 1.164 2012/12/02 12:10:43 apb Exp $ 21.1Stv 31.3Stv.include <bsd.own.mk> 41.3Stv 51.159Sjoerg# Make sure that the ordered build/install processing applies when using 61.159Sjoerg# plain make. 71.159Sjoerg.MAIN: build_install 81.159Sjoerg 91.164Sapb# TOOLDIR must be valid, unless MKTOOLS=no 101.164Sapb.if ${MKTOOLS:Uyes} != "no" 111.164Sapb.if "${TOOLDIR}" == "" 121.164Sapb.error "TOOLDIR is undefined or empty" 131.164Sapb.elif "${TOOLDIR:tW:M/*}" == "" 141.164Sapb.error "TOOLDIR is not an absolute path: ${TOOLDIR}" 151.164Sapb#.elif !exists(TOOLDIR) # XXX .exists fails for directories 161.164Sapb#.error "TOOLDIR does not exist: ${TOOLDIR}" 171.164Sapb.endif 181.164Sapb.endif # MKTOOLS != no 191.164Sapb 201.160Spooka.if ${TOOLCHAIN_MISSING} == "no" 211.160Spooka.if defined(HAVE_GCC) 221.94SjmcTOOLCHAIN_BITS= gmake .WAIT 231.156Sjoerg.endif 241.156Sjoerg 251.156Sjoerg.if defined(HAVE_GCC) 261.146Smrg.if ${HAVE_GCC} >= 45 271.146SmrgTOOLCHAIN_BITS+= gmp .WAIT 281.146SmrgTOOLCHAIN_BITS+= mpfr .WAIT 291.146SmrgTOOLCHAIN_BITS+= mpc .WAIT 301.94Sjmc.endif 311.156Sjoerg.endif 321.156Sjoerg.endif 331.156Sjoerg 341.156Sjoerg.if ${TOOLCHAIN_MISSING} == "no" 351.94SjmcTOOLCHAIN_BITS+= binutils .WAIT 361.156Sjoerg.endif 371.156Sjoerg 381.156Sjoerg.if defined(HAVE_GCC) 391.156Sjoerg.if ${TOOLCHAIN_MISSING} == "no" 401.77SmrgTOOLCHAIN_BITS+= gcc 411.97Smrg. if ${MKCROSSGDB:Uno} != "no" 421.74SclTOOLCHAIN_BITS+= gdb 431.70Smrg. endif 441.156SjoergTOOLCHAIN_BITS+= .WAIT 451.31Stv.endif 461.118Sgmcgarry.endif 471.118Sgmcgarry 481.118Sgmcgarry.if defined(HAVE_PCC) 491.118Sgmcgarry.if ${TOOLCHAIN_MISSING} == "no" 501.118SgmcgarryTOOLCHAIN_BITS+= pcc 511.118Sgmcgarry.endif 521.118Sgmcgarry.endif 531.31Stv 541.157Spooka.if ${TOOLCHAIN_MISSING} == "no" 551.157Spooka# XXX Eventually, we want to be able to build dbsym and mdsetimage 561.157Spooka# XXX if EXTERNAL_TOOLCHAIN is set. 571.156SjoergTOOLCHAIN_BITS+= dbsym mdsetimage 581.157Spooka.endif 591.156Sjoerg 601.137SdarranDTRACE_BITS= 611.137Sdarran.if ${MKDTRACE} != "no" 621.137SdarranDTRACE_BITS+= .WAIT libelf 631.137SdarranDTRACE_BITS+= .WAIT libdwarf 641.162SapbDTRACE_BITS+= .WAIT libctf 651.137SdarranDTRACE_BITS+= .WAIT ctfconvert ctfmerge 661.137Sdarran.endif 671.137Sdarran 681.99SmrgLINT_BITS= 691.99Smrg.if ${MKLINT} != "no" 701.99SmrgLINT_BITS= lint lint2 711.99Smrg.endif 721.99Smrg 731.16Stv# Dependencies in SUBDIR below ordered to maximize parallel ability. 741.29StvSUBDIR= host-mkdep .WAIT compat .WAIT \ 751.124Sapb binstall .WAIT mktemp .WAIT sed .WAIT \ 761.113Sapb cap_mkdb crunchgen ctags genassym gencat hexdump join \ 771.99Smrg ${LINT_BITS} \ 781.152Syamt lorder makewhatis mkdep mtree nbperf .WAIT rpcgen tsort \ 791.134Sroy uudecode m4 \ 801.132Smrg .WAIT texinfo \ 811.132Smrg .WAIT yacc \ 821.132Smrg .WAIT awk \ 831.153Schristos .WAIT tic \ 841.132Smrg .WAIT lex \ 851.132Smrg .WAIT pax \ 861.132Smrg .WAIT ${TOOLCHAIN_BITS} \ 871.137Sdarran ${DTRACE_BITS} \ 881.138Sjmmv asn1_compile cat cksum compile_et config db \ 891.145Selric file lint1 slc \ 901.144Sriz makefs .WAIT menuc mkcsmapper mkesdb mklocale mknod msgc \ 911.132Smrg .WAIT disklabel \ 921.132Smrg .WAIT paxctl \ 931.132Smrg .WAIT fdisk \ 941.132Smrg .WAIT installboot \ 951.154Snjoly pwd_mkdb stat strfile sunlabel zic 961.39Stv 971.142Sjoerg.if ${MKLLVM} != "no" 981.142SjoergSUBDIR+= \ 991.142Sjoerg llvm .WAIT \ 1001.149Sjoerg llvm-lib/libLLVMSupport llvm-lib/libLLVMTableGen .WAIT \ 1011.159Sjoerg llvm-tblgen llvm-clang-tblgen .WAIT \ 1021.142Sjoerg llvm-include .WAIT \ 1031.142Sjoerg llvm-lib .WAIT \ 1041.142Sjoerg llvm-clang 1051.142Sjoerg.endif 1061.142Sjoerg 1071.121Sdyoung.if ${MKMAN} != "no" || ${MKDOC} != "no" || ${MKHTML} != "no" 1081.136Sjoerg. if ${MKGROFF} != "no" 1091.39StvSUBDIR+= groff 1101.136Sjoerg. endif 1111.128SjoergSUBDIR+= mandoc 1121.39Stv.endif 1131.22Stv 1141.22Stv.if ${MKMAINTAINERTOOLS:Uno} != "no" 1151.103SlukemSUBDIR+= autoconf .WAIT gettext 1161.72Smatt.endif 1171.72Smatt 1181.140Smrg.if ${USE_PIGZGZIP} != "no" 1191.140SmrgSUBDIR+= pigz 1201.140Smrg.endif 1211.140Smrg 1221.86Sjmc.if ${MACHINE} == "hp700" 1231.83SskrllSUBDIR+= hp700-mkboot 1241.83Sskrll.endif 1251.83Sskrll 1261.86Sjmc.if ${MACHINE} == "ibmnws" 1271.72SmattSUBDIR+= ibmnws-ncdcs 1281.79Smatt.endif 1291.79Smatt 1301.86Sjmc.if ${MACHINE} == "macppc" 1311.79SmattSUBDIR+= macppc-fixcoff 1321.48Skleink.endif 1331.48Skleink 1341.116Sgarbled.if (${MACHINE} == "prep" || ${MACHINE} == "rs6000" || ${MACHINE} == "bebox") 1351.115SgarbledSUBDIR+= powerpc-mkbootimage 1361.22Stv.endif 1371.37Sgmcgarry 1381.148Stsutsui.if ${MACHINE_ARCH} == "m68k" 1391.148StsutsuiSUBDIR+= m68k-elf2aout 1401.148Stsutsui.endif 1411.148Stsutsui 1421.147Smrg.if (${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \ 1431.147Smrg ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb") 1441.37SgmcgarrySUBDIR+= mips-elf2ecoff 1451.76Ssekiya.endif 1461.76Ssekiya 1471.76Ssekiya.if (${MACHINE} == "sgimips") 1481.76SsekiyaSUBDIR+= sgivol 1491.51Sbjh21.endif 1501.51Sbjh21 1511.82Sabs.if ${MACHINE} == "acorn32" 1521.82SabsSUBDIR+= sparkcrc 1531.82Sabs.endif 1541.82Sabs 1551.125Sabs.if (${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64") 1561.51Sbjh21SUBDIR+= fgen 1571.37Sgmcgarry.endif 1581.37Sgmcgarry 1591.85Sjmc.if ${MACHINE} == "amiga" 1601.85SjmcSUBDIR+= amiga-elf2bb 1611.85SjmcSUBDIR+= amiga-txlt 1621.85Sjmc.endif 1631.85Sjmc 1641.86Sjmc.if ${MACHINE} == "hp300" 1651.86SjmcSUBDIR+= hp300-mkboot 1661.86Sjmc.endif 1671.86Sjmc 1681.161Sjkunz.if ${MACHINE} == "evbarm" && ${MACHINE_ARCH} == "arm" 1691.158SjkunzSUBDIR+= elftosb 1701.158Sjkunz.endif 1711.158Sjkunz 1721.143Sphx.if ${MACHINE} == "evbarm" || ${MACHINE} == "evbmips" || \ 1731.143Sphx ${MACHINE} == "evbppc" || ${MACHINE} == "sandpoint" 1741.139SjmcneillSUBDIR+= mkubootimage 1751.139Sjmcneill.endif 1761.139Sjmcneill 1771.66Slukemcheck_MKTOOLS: .PHONY .NOTMAIN 1781.19Sjmc.if ${MKTOOLS:Uyes} == "no" 1791.17Stv @echo '*** WARNING: "MKTOOLS" is set to "no"; this will prevent building and' 1801.17Stv @echo '*** updating your host toolchain. This should be used only as a' 1811.17Stv @echo '*** temporary workaround for toolchain problems, as it will result' 1821.23Swiz @echo '*** in version skew and build errors over time!' 1831.18Sjmc.endif 1841.17Stv 1851.66Slukem.if ${MKTOOLS:Uyes} == "no" || ${USETOOLS} != "yes" # { 1861.163SapbSUBDIR= # empty 1871.67Slukemrealall realdepend install: check_MKTOOLS 1881.66Slukem.endif # } 1891.1Stv 1901.1Stv.include <bsd.subdir.mk> 1911.159Sjoerg.include <bsd.buildinstall.mk> 1921.11Stv.include <bsd.obj.mk> 1931.16Stv 1941.102Stron.if !defined(PREVIOUSTOOLDIR) 1951.102Stron. if exists(PREVIOUSTOOLDIR) 1961.66SlukemPREVIOUSTOOLDIR!= cat PREVIOUSTOOLDIR 1971.102Stron. else 1981.162SapbPREVIOUSTOOLDIR= 1991.102Stron. endif 2001.66Slukem.endif 2011.66Slukem 2021.66SlukemCLEANFILES+= PREVIOUSTOOLDIR 2031.66Slukem 2041.101Stronrealall realdepend: .MAKE 2051.107Sapb.if !empty(PREVIOUSTOOLDIR) && "${PREVIOUSTOOLDIR}" != "${TOOLDIR}" 2061.66Slukem @echo "*** WARNING: TOOLDIR has moved?" 2071.66Slukem @echo "*** PREVIOUSTOOLDIR '${PREVIOUSTOOLDIR}'" 2081.66Slukem @echo "*** != TOOLDIR '${TOOLDIR}'" 2091.66Slukem @echo "*** Cleaning mis-matched tools" 2101.66Slukem rm -f PREVIOUSTOOLDIR 2111.106Sfreza (cd ${.CURDIR} && ${MAKE} PREVIOUSTOOLDIR=${TOOLDIR} cleandir) 2121.66Slukem.endif 2131.102Stron echo ${TOOLDIR} >PREVIOUSTOOLDIR 2141.66Slukem 2151.69Stroncleandir: 2161.69Stron rm -f ${CLEANFILES} 217