Makefile revision 1.164
1# $NetBSD: Makefile,v 1.164 2012/12/02 12:10:43 apb Exp $ 2 3.include <bsd.own.mk> 4 5# Make sure that the ordered build/install processing applies when using 6# plain make. 7.MAIN: build_install 8 9# TOOLDIR must be valid, unless MKTOOLS=no 10.if ${MKTOOLS:Uyes} != "no" 11.if "${TOOLDIR}" == "" 12.error "TOOLDIR is undefined or empty" 13.elif "${TOOLDIR:tW:M/*}" == "" 14.error "TOOLDIR is not an absolute path: ${TOOLDIR}" 15#.elif !exists(TOOLDIR) # XXX .exists fails for directories 16#.error "TOOLDIR does not exist: ${TOOLDIR}" 17.endif 18.endif # MKTOOLS != no 19 20.if ${TOOLCHAIN_MISSING} == "no" 21.if defined(HAVE_GCC) 22TOOLCHAIN_BITS= gmake .WAIT 23.endif 24 25.if defined(HAVE_GCC) 26.if ${HAVE_GCC} >= 45 27TOOLCHAIN_BITS+= gmp .WAIT 28TOOLCHAIN_BITS+= mpfr .WAIT 29TOOLCHAIN_BITS+= mpc .WAIT 30.endif 31.endif 32.endif 33 34.if ${TOOLCHAIN_MISSING} == "no" 35TOOLCHAIN_BITS+= binutils .WAIT 36.endif 37 38.if defined(HAVE_GCC) 39.if ${TOOLCHAIN_MISSING} == "no" 40TOOLCHAIN_BITS+= gcc 41. if ${MKCROSSGDB:Uno} != "no" 42TOOLCHAIN_BITS+= gdb 43. endif 44TOOLCHAIN_BITS+= .WAIT 45.endif 46.endif 47 48.if defined(HAVE_PCC) 49.if ${TOOLCHAIN_MISSING} == "no" 50TOOLCHAIN_BITS+= pcc 51.endif 52.endif 53 54.if ${TOOLCHAIN_MISSING} == "no" 55# XXX Eventually, we want to be able to build dbsym and mdsetimage 56# XXX if EXTERNAL_TOOLCHAIN is set. 57TOOLCHAIN_BITS+= dbsym mdsetimage 58.endif 59 60DTRACE_BITS= 61.if ${MKDTRACE} != "no" 62DTRACE_BITS+= .WAIT libelf 63DTRACE_BITS+= .WAIT libdwarf 64DTRACE_BITS+= .WAIT libctf 65DTRACE_BITS+= .WAIT ctfconvert ctfmerge 66.endif 67 68LINT_BITS= 69.if ${MKLINT} != "no" 70LINT_BITS= lint lint2 71.endif 72 73# Dependencies in SUBDIR below ordered to maximize parallel ability. 74SUBDIR= host-mkdep .WAIT compat .WAIT \ 75 binstall .WAIT mktemp .WAIT sed .WAIT \ 76 cap_mkdb crunchgen ctags genassym gencat hexdump join \ 77 ${LINT_BITS} \ 78 lorder makewhatis mkdep mtree nbperf .WAIT rpcgen tsort \ 79 uudecode m4 \ 80 .WAIT texinfo \ 81 .WAIT yacc \ 82 .WAIT awk \ 83 .WAIT tic \ 84 .WAIT lex \ 85 .WAIT pax \ 86 .WAIT ${TOOLCHAIN_BITS} \ 87 ${DTRACE_BITS} \ 88 asn1_compile cat cksum compile_et config db \ 89 file lint1 slc \ 90 makefs .WAIT menuc mkcsmapper mkesdb mklocale mknod msgc \ 91 .WAIT disklabel \ 92 .WAIT paxctl \ 93 .WAIT fdisk \ 94 .WAIT installboot \ 95 pwd_mkdb stat strfile sunlabel zic 96 97.if ${MKLLVM} != "no" 98SUBDIR+= \ 99 llvm .WAIT \ 100 llvm-lib/libLLVMSupport llvm-lib/libLLVMTableGen .WAIT \ 101 llvm-tblgen llvm-clang-tblgen .WAIT \ 102 llvm-include .WAIT \ 103 llvm-lib .WAIT \ 104 llvm-clang 105.endif 106 107.if ${MKMAN} != "no" || ${MKDOC} != "no" || ${MKHTML} != "no" 108. if ${MKGROFF} != "no" 109SUBDIR+= groff 110. endif 111SUBDIR+= mandoc 112.endif 113 114.if ${MKMAINTAINERTOOLS:Uno} != "no" 115SUBDIR+= autoconf .WAIT gettext 116.endif 117 118.if ${USE_PIGZGZIP} != "no" 119SUBDIR+= pigz 120.endif 121 122.if ${MACHINE} == "hp700" 123SUBDIR+= hp700-mkboot 124.endif 125 126.if ${MACHINE} == "ibmnws" 127SUBDIR+= ibmnws-ncdcs 128.endif 129 130.if ${MACHINE} == "macppc" 131SUBDIR+= macppc-fixcoff 132.endif 133 134.if (${MACHINE} == "prep" || ${MACHINE} == "rs6000" || ${MACHINE} == "bebox") 135SUBDIR+= powerpc-mkbootimage 136.endif 137 138.if ${MACHINE_ARCH} == "m68k" 139SUBDIR+= m68k-elf2aout 140.endif 141 142.if (${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \ 143 ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb") 144SUBDIR+= mips-elf2ecoff 145.endif 146 147.if (${MACHINE} == "sgimips") 148SUBDIR+= sgivol 149.endif 150 151.if ${MACHINE} == "acorn32" 152SUBDIR+= sparkcrc 153.endif 154 155.if (${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64") 156SUBDIR+= fgen 157.endif 158 159.if ${MACHINE} == "amiga" 160SUBDIR+= amiga-elf2bb 161SUBDIR+= amiga-txlt 162.endif 163 164.if ${MACHINE} == "hp300" 165SUBDIR+= hp300-mkboot 166.endif 167 168.if ${MACHINE} == "evbarm" && ${MACHINE_ARCH} == "arm" 169SUBDIR+= elftosb 170.endif 171 172.if ${MACHINE} == "evbarm" || ${MACHINE} == "evbmips" || \ 173 ${MACHINE} == "evbppc" || ${MACHINE} == "sandpoint" 174SUBDIR+= mkubootimage 175.endif 176 177check_MKTOOLS: .PHONY .NOTMAIN 178.if ${MKTOOLS:Uyes} == "no" 179 @echo '*** WARNING: "MKTOOLS" is set to "no"; this will prevent building and' 180 @echo '*** updating your host toolchain. This should be used only as a' 181 @echo '*** temporary workaround for toolchain problems, as it will result' 182 @echo '*** in version skew and build errors over time!' 183.endif 184 185.if ${MKTOOLS:Uyes} == "no" || ${USETOOLS} != "yes" # { 186SUBDIR= # empty 187realall realdepend install: check_MKTOOLS 188.endif # } 189 190.include <bsd.subdir.mk> 191.include <bsd.buildinstall.mk> 192.include <bsd.obj.mk> 193 194.if !defined(PREVIOUSTOOLDIR) 195. if exists(PREVIOUSTOOLDIR) 196PREVIOUSTOOLDIR!= cat PREVIOUSTOOLDIR 197. else 198PREVIOUSTOOLDIR= 199. endif 200.endif 201 202CLEANFILES+= PREVIOUSTOOLDIR 203 204realall realdepend: .MAKE 205.if !empty(PREVIOUSTOOLDIR) && "${PREVIOUSTOOLDIR}" != "${TOOLDIR}" 206 @echo "*** WARNING: TOOLDIR has moved?" 207 @echo "*** PREVIOUSTOOLDIR '${PREVIOUSTOOLDIR}'" 208 @echo "*** != TOOLDIR '${TOOLDIR}'" 209 @echo "*** Cleaning mis-matched tools" 210 rm -f PREVIOUSTOOLDIR 211 (cd ${.CURDIR} && ${MAKE} PREVIOUSTOOLDIR=${TOOLDIR} cleandir) 212.endif 213 echo ${TOOLDIR} >PREVIOUSTOOLDIR 214 215cleandir: 216 rm -f ${CLEANFILES} 217