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