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