Makefile revision 1.61
1# $NetBSD: Makefile,v 1.61 2008/08/31 00:19:33 lukem Exp $ 2 3# The `all' target must appear before bsd.own.mk is pulled in. 4all: 5 @echo "Please understand what you are doing, first." 6 @false 7 8.include <bsd.own.mk> 9.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib" 10GREP?= grep 11 12SETSCMD= cd ${.CURDIR} && \ 13 DESTDIR=${DESTDIR:Q} \ 14 MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \ 15 CKSUM=${TOOL_CKSUM:Q} \ 16 DB=${TOOL_DB:Q} \ 17 HOST_SH=${HOST_SH:Q} \ 18 MAKE=${MAKE:Q} \ 19 MKTEMP=${TOOL_MKTEMP:Q} \ 20 MTREE=${TOOL_MTREE:Q} \ 21 PAX=${TOOL_PAX:Q} \ 22 TSORT=${TSORT:Q} \ 23 ${HOST_SH} 24 25MAKETARS_FLAGS= 26.if ${MKX11} != "no" || ${MKXORG} != "no" 27MAKEFLIST_FLAGS= -b 28MAKESRCTARS_FLAGS= -x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc 29.else 30MAKEFLIST_FLAGS= 31MAKESRCTARS_FLAGS= -N ${NETBSDSRCDIR}/etc 32.endif 33 34.if ${MAKEVERBOSE} != 2 35MAKETARS_FLAGS+= -q 36MAKESRCTARS_FLAGS+= -q 37.endif 38 39.if !defined(MAKETARSETS) 40MAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS} 41.endif 42 43print_have_gcc: .PHONY 44 @echo ${HAVE_GCC} 45 46print_machine: .PHONY 47 @echo ${MACHINE} 48 49print_machine_arch: .PHONY 50 @echo ${MACHINE_ARCH} 51 52print_machine_cpu: .PHONY 53 @echo ${MACHINE_CPU} 54 55print_object_fmt: .PHONY 56 @echo ${OBJECT_FMT} 57 58print_toolchain_missing: .PHONY 59 @echo "${TOOLCHAIN_MISSING}" 60 61# This target has debugging value only, really. 62makeflist: .PHONY .PRECIOUS check_DESTDIR 63 ${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS} 64 65# 66# SET BUILDING TARGETS 67# 68 69TARDIR= ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets 70SOURCETARDIR= ${RELEASEDIR}/source/sets 71 72.if ${MKUNPRIVED} == "no" 73METALOG.unpriv= 74METALOG.sanitised.unpriv= 75.else 76METALOG.unpriv= -M ${METALOG} 77METALOG.sanitised= ${METALOG}.sanitised 78METALOG.sanitised.unpriv= -M ${METALOG.sanitised} 79.endif 80 81.if ${MKUNPRIVED} == "no" 82sanitise_METALOG: .PHONY 83 @true 84.else 85sanitise_METALOG: .PHONY ${METALOG.sanitised} 86${METALOG.sanitised}: ${METALOG} 87 ( cat ${NETBSDSRCDIR}/etc/mtree/NetBSD.dist ; \ 88 echo '/unset all' ; \ 89 cat ${METALOG} ) \ 90 | ${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc > ${METALOG}.new && \ 91 ( rm -f ${METALOG} ; \ 92 mv ${METALOG}.new ${METALOG} ) 93 cat ${METALOG} | ${GREP} -v " optional" > ${.TARGET} 94.endif 95 96.if defined(DESTDIR) && ${DESTDIR} != "" 97checkflist_if_DESTDIR: checkflist 98.else 99checkflist_if_DESTDIR: 100.endif 101 102checkflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG 103 ${SETSCMD} ${.CURDIR}/checkflist \ 104 ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv} 105 106checkflist-x11: .PHONY check_DESTDIR 107 ${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS} 108 109 110# If MAKETARS_SERIAL is set to "YES" or "yes", then the tar sets will be 111# made in series, even if make's "-j" flag requests multiple parallel 112# jobs. This is useful on systems that exhibit poor performance when 113# running multiple parallel disk-intensive operations. The default is 114# MAKETARS_SERIAL=NO, which will obey the "-j" flag passed to the make 115# command. 116# 117MAKETARS_SERIAL?= NO 118.if empty(MAKETARS_SERIAL:M[Yy][Ee][Ss]) 119_MAKETARS_WAIT= # empty 120.else 121_MAKETARS_WAIT= .WAIT 122.endif 123 124maketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 125 sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 126 maketarsetup .WAIT \ 127 ${MAKETARSETS:@.TARS.@${_MAKETARS_WAIT} do-${.TARS.}@} 128 @true 129 130maketarsetup: .EXEC 131.if defined(DESTDIR) && ${DESTDIR} != "" 132 ${_MKMSG} "execute checkflist" 133 ${MAKE} checkflist 134.endif 135 mkdir -p ${TARDIR} 136 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 137 rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 138 done 139 140makesetfiles: .PHONY 141 ${_MKMSG_CREATE} "set lists" 142 ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 143 ${MAKETARS_FLAGS} \ 144 -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 145 146.for tar in ${MAKETARSETS} 147do-${tar}: .PHONY sanitise_METALOG 148 ${_MKMSG_CREATE} "${tar}.tgz" 149 ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 150 ${METALOG.sanitised.unpriv} \ 151 -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 152 || rm -f ${TARDIR}/${tar}.tgz 153.endfor 154 155 156makesrctars: .PRECIOUS .PHONY check_RELEASEDIR 157 ${_MKMSG_CREATE} "source tar files" 158 mkdir -p ${SOURCETARDIR} 159 ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 160 ${NETBSDSRCDIR} ${SOURCETARDIR} 161 162 163makesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 164 ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 165 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 166 mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 167 done 168 169.for tar in ${MAKETARSETS} 170do-sum-${tar}: .PHONY do-${tar} 171 ${_MKMSG_CREATE} "${tar} checksums" 172 ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 173 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 174 ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 175 done 176.endfor 177.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 178 179 180installsets: .PHONY check_DESTDIR sanitise_METALOG 181.if !defined(INSTALLDIR) 182 @echo "setenv INSTALLDIR before doing that!" 183 @false 184.endif 185 ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 186 ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 187 ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 188 189# Should we ignore errors like extra or missing files in the flists? 190SLOPPY_FLIST?= NO 191.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 192CHECKFLIST_FLAGS+= -e -m 193REGPKG.sloppy= -m 194.endif 195 196.if ${MAKEVERBOSE} == 0 197REGPKG.verbose?= -q 198.elif ${MAKEVERBOSE} == 1 199REGPKG.verbose?= 200.else # MAKEVERBOSE == 2 201REGPKG.verbose?= -v 202.endif 203REGPKG.force?= # -f, or empty 204REGPKG.cache?= -c # -c, or empty 205REGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 206SYSPKGSETS?= all 207makesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 208 sanitise_METALOG checkflist_if_DESTDIR 209 mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 210 ${SETSCMD} ${.CURDIR}/regpkgset \ 211 ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 212 ${REGPKG.cache} ${REGPKG.update} \ 213 -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 214 -N ${NETBSDSRCDIR}/etc \ 215 -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs ${SYSPKGSETS} 216 217makesyspkgsums: .PHONY check_RELEASEDIR 218 ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/syspkgs 219 220# Update the "deps" file. 221# XXX: Why is "deps" checked in to the source tree, instead of 222# just being created as necessary? 223makedeps: .PHONY 224 ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 225 226# 227# MAIN ENTRY POINTS 228# 229 230syspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 231 @true 232 233sets: .PHONY maketars .WAIT makesums 234 @true 235 236sourcesets: .PHONY makesrctars 237 @true 238 239.include <bsd.sys.mk> 240