Makefile revision 1.49
1#	$NetBSD: Makefile,v 1.49 2006/01/04 14:58:58 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"
10
11SETSCMD=	cd ${.CURDIR} && \
12		DESTDIR=${DESTDIR:Q} \
13		MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
14		CKSUM=${TOOL_CKSUM:Q} \
15		DB=${TOOL_DB:Q} \
16		HOST_SH=${HOST_SH:Q} \
17		MAKE=${MAKE:Q} \
18		MKTEMP=${TOOL_MKTEMP:Q} \
19		MTREE=${TOOL_MTREE:Q} \
20		PAX=${TOOL_PAX:Q} \
21		TSORT=${TSORT:Q} \
22		${HOST_SH}
23
24.if ${MKX11} != "no"
25MAKEFLIST_FLAGS=	-b
26MAKESRCTARS_FLAGS=	-x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc
27.else
28MAKEFLIST_FLAGS=
29MAKESRCTARS_FLAGS= 	-N ${NETBSDSRCDIR}/etc
30.endif
31
32.if !defined(MAKETARSETS)
33MAKETARSETS!= ${SETSCMD} ./makeflist -l ${MAKEFLIST_FLAGS}
34.endif
35
36print_have_gcc3: .PHONY
37	@echo ${HAVE_GCC3}
38
39print_machine: .PHONY
40	@echo ${MACHINE}
41
42print_machine_arch: .PHONY
43	@echo ${MACHINE_ARCH}
44
45print_machine_cpu: .PHONY
46	@echo ${MACHINE_CPU}
47
48print_object_fmt: .PHONY
49	@echo ${OBJECT_FMT}
50
51print_toolchain_missing: .PHONY
52	@echo "${TOOLCHAIN_MISSING}"
53
54print_use_tools_toolchain: .PHONY
55	@echo "${USE_TOOLS_TOOLCHAIN}"
56
57print_x11_version: .PHONY
58	${HOST_SH} -c '. ${.CURDIR}/sets.subr; echo $$x11_version'
59
60# This target has debugging value only, really.
61makeflist: .PHONY .PRECIOUS check_DESTDIR
62	${SETSCMD} ./makeflist ${MAKEFLIST_FLAGS}
63
64#
65# SET BUILDING TARGETS
66#
67
68TARDIR=		${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets
69SOURCETARDIR=	${RELEASEDIR}/source/sets
70
71.if ${MKUNPRIVED} == "no"
72METALOG.unpriv=
73METALOG.sanitised.unpriv=
74.else
75METALOG.unpriv=	-M ${METALOG}
76METALOG.sanitised= ${METALOG}.sanitised
77METALOG.sanitised.unpriv= -M ${METALOG.sanitised}
78.endif
79
80.if ${MKUNPRIVED} == "no"
81sanitise_METALOG: .PHONY
82	@true
83.else
84sanitise_METALOG: .PHONY ${METALOG.sanitised}
85${METALOG.sanitised}: ${METALOG}
86	${TOOL_MTREE} -C -k all -N ${NETBSDSRCDIR}/etc <${METALOG} >${.TARGET}
87.endif
88
89.if defined(DESTDIR) && ${DESTDIR} != ""
90checkflist_if_DESTDIR: checkflist
91.else
92checkflist_if_DESTDIR:
93.endif
94
95checkflist: .PRECIOUS .PHONY check_DESTDIR sanitise_METALOG
96	${SETSCMD} ${.CURDIR}/checkflist \
97	    ${MAKEFLIST_FLAGS} ${CHECKFLIST_FLAGS} ${METALOG.sanitised.unpriv}
98
99checkflist-x11: .PHONY check_DESTDIR
100	${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS}
101
102
103maketars: .PRECIOUS .PHONY check_DESTDIR check_RELEASEDIR \
104		sanitise_METALOG checkflist_if_DESTDIR .WAIT \
105		maketarsetup .WAIT ${MAKETARSETS:@.TARS.@do-${.TARS.}@}
106	@true
107
108maketarsetup: .EXEC
109.if defined(DESTDIR) && ${DESTDIR} != ""
110	${_MKMSG} "execute  checkflist"
111	${MAKE} checkflist
112.endif
113	mkdir -p ${TARDIR}
114	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
115		rm -f ${TARDIR}/$$i ${TARDIR}/$$i.tmp; \
116	done
117
118makesetfiles: .PHONY
119	${_MKMSG_CREATE} "set lists"
120	${SETSCMD} ./maketars -S -d ${DESTDIR:S,^$,/,} ${METALOG.unpriv} \
121	    -N ${NETBSDSRCDIR}/etc ${MAKEFLIST_FLAGS} -t ${TARDIR}
122
123.for tar in ${MAKETARSETS}
124do-${tar}: .PHONY
125	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \
126	${METALOG.sanitised.unpriv} \
127	    -N ${NETBSDSRCDIR}/etc -t ${TARDIR} ${tar} \
128	|| rm -f ${TARDIR}/${tar}.tgz
129.endfor
130
131
132makesrctars: .PRECIOUS .PHONY check_RELEASEDIR
133	mkdir -p ${SOURCETARDIR}
134	${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \
135	    ${NETBSDSRCDIR} ${SOURCETARDIR}
136
137
138makesums: .PRECIOUS .PHONY check_RELEASEDIR .WAIT \
139		${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
140	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
141		mv ${TARDIR}/$$i.tmp ${TARDIR}/$$i; \
142	done
143
144.for tar in ${MAKETARSETS}
145do-sum-${tar}: .PHONY do-${tar}
146	${MAKESUMS} -t ${TARDIR} ${tar}.tgz
147	for i in BSDSUM CKSUM MD5 SHA512 SYSVSUM; do \
148		${TOOL_CAT} ${TARDIR}/$$i >> ${TARDIR}/$$i.tmp; \
149	done
150.endfor
151.ORDER: ${MAKETARSETS:@.TARS.@do-sum-${.TARS.}@}
152
153
154installsets: .PHONY check_DESTDIR sanitise_METALOG
155.if !defined(INSTALLDIR)
156	@echo "setenv INSTALLDIR before doing that!"
157	@false
158.endif
159	${SETSCMD} ./maketars -d ${DESTDIR:S,^$,/,} \
160	    ${METALOG.sanitised.unpriv} -N ${NETBSDSRCDIR}/etc \
161	    ${MAKEFLIST_FLAGS} -i ${INSTALLDIR} ${INSTALLSETS}
162
163# Should we ignore errors like extra or missing files in the flists?
164SLOPPY_FLIST?= NO
165.if !empty(SLOPPY_FLIST:M[Yy][Ee][Ss])
166CHECKFLIST_FLAGS+=	-e -m
167REGPKG.sloppy=		-m
168.endif
169
170.if ${MAKEVERBOSE} == 0
171REGPKG.verbose?= -q
172.elif ${MAKEVERBOSE} == 1
173REGPKG.verbose?=
174.else	# MAKEVERBOSE == 2
175REGPKG.verbose?= -v
176.endif
177REGPKG.force?=		# -f, or empty
178REGPKG.cache?= -c	# -c, or empty
179REGPKG.update:= ${MKUPDATE:tl:Nno:C/..*/-u/}
180SYSPKGSETS?= all
181makesyspkgs: .PHONY check_DESTDIR check_RELEASEDIR \
182		sanitise_METALOG checkflist_if_DESTDIR
183	mkdir -p ${RELEASEDIR}/${MACHINE}/binary/syspkgs
184	${SETSCMD} ${.CURDIR}/regpkgset \
185	    ${REGPKG.verbose} ${REGPKG.force} ${REGPKG.sloppy} \
186	    ${REGPKG.cache} ${REGPKG.update} \
187	    -d ${DESTDIR:S,^$,/,} ${METALOG.sanitised.unpriv} \
188	    -N ${NETBSDSRCDIR}/etc \
189	    -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs ${SYSPKGSETS}
190
191makesyspkgsums: .PHONY check_RELEASEDIR
192	${MAKESUMS} -t ${RELEASEDIR}/${MACHINE}/binary/syspkgs
193
194#
195# MAIN ENTRY POINTS
196#
197
198syspkgs: .PHONY makesyspkgs .WAIT makesyspkgsums
199	@true
200
201sets: .PHONY maketars .WAIT makesums
202	@true
203
204sourcesets: .PHONY makesrctars
205	@true
206
207.include <bsd.sys.mk>
208