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