1# $NetBSD: Makefile,v 1.57 2008/03/16 07:02:22 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" 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# Note that the .WAIT inside the ${MAKETARSETS:@...} loop is not 114# logically necessary, but many systems exhibit poor performance when 115# running multiple parallel disk-intensive processes. 116maketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \ 117 sanitise_METALOG checkflist_if_DESTDIR .WAIT \ 118 maketarsetup .WAIT ${MAKETARSETS:@.TARS.@.WAIT do-${.TARS.}@} 119 @true 120 121maketarsetup: .EXEC 122.if defined(DESTDIR) && ${DESTDIR} != "" 123 ${_MKMSG} "execute checkflist" 124 ${MAKE} checkflist 125.endif 126 mkdir -p ${TARDIR} 127 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 128 rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \ 129 done 130 131makesetfiles: .PHONY 132 ${_MKMSG_CREATE} "set lists" 133 ${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \ 134 ${MAKETARS_FLAGS} \ 135 -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR} 136 137.for tar in ${MAKETARSETS} 138do-${tar}: .PHONY sanitise_METALOG 139 ${_MKMSG_CREATE} "${tar}.tgz" 140 ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 141 ${METALOG.sanitised.unpriv} \ 142 -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \ 143 || rm -f ${TARDIR}/${tar}.tgz 144.endfor 145 146 147makesrctars: .PRECIOUS .PHONY check_RELEASEDIR 148 ${_MKMSG_CREATE} "source tar files" 149 mkdir -p ${SOURCETARDIR} 150 ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \ 151 ${NETBSDSRCDIR} ${SOURCETARDIR} 152 153 154makesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \ 155 ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 156 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 157 mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \ 158 done 159 160.for tar in ${MAKETARSETS} 161do-sum-${tar}: .PHONY do-${tar} 162 ${_MKMSG_CREATE} "${tar} checksums" 163 ${MAKESUMS} -t ${TARDIR} ${tar}.tgz 164 for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \ 165 ${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \ 166 done 167.endfor 168.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@} 169 170 171installsets: .PHONY check_DESTDIR sanitise_METALOG 172.if !defined(INSTALLDIR) 173 @echo "setenv INSTALLDIR before doing that!" 174 @false 175.endif 176 ${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} ${MAKETARS_FLAGS} \ 177 ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \ 178 ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS} 179 180# Should we ignore errors like extra or missing files in the flists? 181SLOPPY_FLIST?= NO 182.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss]) 183CHECKFLIST_FLAGS+= -e -m 184REGPKG.sloppy= -m 185.endif 186 187.if ${MAKEVERBOSE} == 0 188REGPKG.verbose?= -q 189.elif ${MAKEVERBOSE} == 1 190REGPKG.verbose?= 191.else # MAKEVERBOSE == 2 192REGPKG.verbose?= -v 193.endif 194REGPKG.force?= # -f, or empty 195REGPKG.cache?= -c # -c, or empty 196REGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/} 197SYSPKGSETS?= all 198makesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \ 199 sanitise_METALOG checkflist_if_DESTDIR 200 mkdir -p ${RELEASEDIR}/${MACHINE}/binary/syspkgs 201 ${SETSCMD} ${.CURDIR}/regpkgset \ 202 ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \ 203 ${REGPKG.cache} ${REGPKG.update} \ 204 -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \ 205 -N ${NETBSDSRCDIR}/etc \ 206 -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs ${SYSPKGSETS} 207 208makesyspkgsums: .PHONY check_RELEASEDIR 209 ${MAKESUMS} -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs 210 211# Update the "deps" file. 212# XXX: Why is "deps" checked in to the source tree, instead of 213# just being created as necessary? 214makedeps: .PHONY 215 ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps 216 217# 218# MAIN ENTRY POINTS 219# 220 221syspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums 222 @true 223 224sets: .PHONY maketars .WAIT makesums 225 @true 226 227sourcesets: .PHONY makesrctars 228 @true 229 230.include <bsd.sys.mk> 231