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.
4 all:
5 @echo "Please understand what you are doing, first."
6 @false
7
8 .include <bsd.own.mk>
9 .include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
10 GREP?= grep
11
12 SETSCMD= 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
26 MAKETARS_FLAGS=
27 .if ${MKX11} != "no" || ${MKXORG} != "no"
28 MAKEFLIST_FLAGS= -b
29 MAKESRCTARS_FLAGS= -x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc
30 .else
31 MAKEFLIST_FLAGS=
32 MAKESRCTARS_FLAGS= -N ${NETBSDSRCDIR}/etc
33 .endif
34
35 .if ${MAKEVERBOSE} != 2
36 MAKETARS_FLAGS+= -q
37 MAKESRCTARS_FLAGS+= -q
38 .endif
39
40 .if !defined(MAKETARSETS)
41 MAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS}
42 .endif
43
44 print_have_gcc: .PHONY
45 @echo ${HAVE_GCC}
46
47 print_machine: .PHONY
48 @echo ${MACHINE}
49
50 print_machine_arch: .PHONY
51 @echo ${MACHINE_ARCH}
52
53 print_machine_cpu: .PHONY
54 @echo ${MACHINE_CPU}
55
56 print_object_fmt: .PHONY
57 @echo ${OBJECT_FMT}
58
59 print_toolchain_missing: .PHONY
60 @echo "${TOOLCHAIN_MISSING}"
61
62 # This target has debugging value only, really.
63 makeflist: .PHONY .PRECIOUS check_DESTDIR
64 ${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS}
65
66 #
67 # SET BUILDING TARGETS
68 #
69
70 TARDIR= ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets
71 SOURCETARDIR= ${RELEASEDIR}/source/sets
72
73 .if ${MKUNPRIVED} == "no"
74 METALOG.unpriv=
75 METALOG.sanitised.unpriv=
76 .else
77 METALOG.unpriv= -M ${METALOG}
78 METALOG.sanitised= ${METALOG}.sanitised
79 METALOG.sanitised.unpriv= -M ${METALOG.sanitised}
80 .endif
81
82 .if ${MKUNPRIVED} == "no"
83 sanitise_METALOG: .PHONY
84 @true
85 .else
86 sanitise_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} != ""
98 checkflist_if_DESTDIR: checkflist
99 .else
100 checkflist_if_DESTDIR:
101 .endif
102
103 checkflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG
104 ${SETSCMD} ${.CURDIR}/checkflist \
105 ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv}
106
107 checkflist-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 #
118 MAKETARS_SERIAL?= NO
119 .if empty(MAKETARS_SERIAL:M[Yy][Ee][Ss])
120 _MAKETARS_WAIT= # empty
121 .else
122 _MAKETARS_WAIT= .WAIT
123 .endif
124
125 maketars: .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
131 maketarsetup: .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
141 makesetfiles: .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}
148 do-${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
157 makesrctars: .PRECIOUS .PHONY check_RELEASEDIR
158 ${_MKMSG_CREATE} "source tar files"
159 mkdir -p ${SOURCETARDIR}
160 ${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \
161 ${NETBSDSRCDIR} ${SOURCETARDIR}
162
163
164 makesums: .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}
171 do-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
181 installsets: .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?
191 SLOPPY_FLIST?= NO
192 .if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss])
193 CHECKFLIST_FLAGS+= -e -m
194 REGPKG.sloppy= -m
195 .endif
196
197 .if ${MAKEVERBOSE} == 0
198 REGPKG.verbose?= -q
199 .elif ${MAKEVERBOSE} == 1
200 REGPKG.verbose?=
201 .else # MAKEVERBOSE == 2
202 REGPKG.verbose?= -v
203 .endif
204 REGPKG.force?= # -f, or empty
205 REGPKG.cache?= -c # -c, or empty
206 REGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/}
207 SYSPKGSETS?= all
208 makesyspkgs: .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
218 makesyspkgsums: .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?
224 makedeps: .PHONY
225 ${SETSCMD} ./syspkgdeps all >${.CURDIR}/deps
226
227 #
228 # MAIN ENTRY POINTS
229 #
230
231 syspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums
232 @true
233
234 sets: .PHONY maketars .WAIT makesums
235 @true
236
237 sourcesets: .PHONY makesrctars
238 @true
239
240 .include <bsd.sys.mk>
241