Makefile revision 12483
1145519Sdarrenr#
2145510Sdarrenr#	$Id: Makefile,v 1.67 1995/11/09 09:58:17 jkh Exp $
3170268Sdarrenr#
4255332Scy# Make command line options:
5170268Sdarrenr#	-DCLOBBER will remove /usr/include and MOST of /usr/lib
6170268Sdarrenr#	-DMAKE_LOCAL to add ./local to the SUBDIR list
7170268Sdarrenr#	-DMAKE_PORTS to add ./ports to the SUBDIR list
8145510Sdarrenr#	-DMAKE_EBONES to build eBones (KerberosIV)
9145510Sdarrenr#
10145510Sdarrenr#	-DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
11145510Sdarrenr#	-DNOCLEAN do not clean at all
12145510Sdarrenr#	-DNOCRYPT will prevent building of crypt versions
13145510Sdarrenr#	-DNOLKM do not build loadable kernel modules
14145510Sdarrenr#	-DNOOBJDIR do not run ``${MAKE} obj''
15145510Sdarrenr#	-DNOPROFILE do not build profiled libraries
16255332Scy#	-DNOSECURE do not go into secure subdir
17255332Scy
18145510Sdarrenr# Put initial settings here.
19145510SdarrenrSUBDIR=
20145510Sdarrenr
21145510Sdarrenr# We must do include and lib first so that the perl *.ph generation
22145510Sdarrenr# works correctly as it uses the header files installed by this.
23145510Sdarrenr.if exists(include)
24145510SdarrenrSUBDIR+= include
25145510Sdarrenr.endif
26255332Scy.if exists(lib)
27145510SdarrenrSUBDIR+= lib
28255332Scy.endif
29255332Scy
30145510Sdarrenr.if exists(bin)
31145510SdarrenrSUBDIR+= bin
32145510Sdarrenr.endif
33145510Sdarrenr.if exists(contrib)
34145510SdarrenrSUBDIR+= contrib
35255332Scy.endif
36255332Scy.if exists(games)
37145510SdarrenrSUBDIR+= games
38145510Sdarrenr.endif
39255332Scy.if exists(gnu)
40145510SdarrenrSUBDIR+= gnu
41145510Sdarrenr.endif
42255332Scy.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
43255332ScySUBDIR+= eBones
44255332Scy.endif
45255332Scy.if exists(libexec)
46255332ScySUBDIR+= libexec
47145510Sdarrenr.endif
48145510Sdarrenr.if exists(sbin)
49255332ScySUBDIR+= sbin
50255332Scy.endif
51145510Sdarrenr.if exists(share)
52145510SdarrenrSUBDIR+= share
53145510Sdarrenr.endif
54145510Sdarrenr.if exists(sys)
55145510SdarrenrSUBDIR+= sys
56145510Sdarrenr.endif
57255332Scy.if exists(usr.bin)
58145510SdarrenrSUBDIR+= usr.bin
59255332Scy.endif
60145510Sdarrenr.if exists(usr.sbin)
61145510SdarrenrSUBDIR+= usr.sbin
62145510Sdarrenr.endif
63145510Sdarrenr.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
64145510SdarrenrSUBDIR+= secure
65255332Scy.endif
66145510Sdarrenr.if exists(lkm) && !defined(NOLKM)
67145510SdarrenrSUBDIR+= lkm
68145510Sdarrenr.endif
69145510Sdarrenr
70255332Scy# etc must be last for "distribute" to work
71145510Sdarrenr.if exists(etc) && make(distribute)
72145510SdarrenrSUBDIR+= etc
73255332Scy.endif
74145510Sdarrenr
75145510Sdarrenr# These are last, since it is nice to at least get the base system
76255332Scy# rebuilt before you do them.
77145510Sdarrenr.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
78255332ScySUBDIR+= local
79255332Scy.endif
80255332Scy.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
81145510SdarrenrSUBDIR+= ports
82145510Sdarrenr.endif
83255332Scy
84255332Scy# Handle the -DNOOBJDIR and -DNOCLEANDIR
85145510Sdarrenr.if defined(NOOBJDIR)
86145510SdarrenrOBJDIR=
87255332Scy.else
88255332ScyOBJDIR=		obj
89145510Sdarrenr.endif
90145510Sdarrenr
91145510Sdarrenr.if defined(NOCLEAN)
92145510SdarrenrCLEANDIR=
93255332ScyWORLD_CLEANDIST=obj
94255332Scy.else
95145510SdarrenrWORLD_CLEANDIST=cleandist
96255332Scy.if defined(NOCLEANDIR)
97255332ScyCLEANDIR=	clean
98255332Scy.else
99255332ScyCLEANDIR=	cleandir
100255332Scy.endif
101255332Scy.endif
102255332Scy
103255332Scyworld:	hierarchy mk $(WORLD_CLEANDIST) includes lib-tools libraries build-tools
104145510Sdarrenr	@echo "--------------------------------------------------------------"
105145510Sdarrenr	@echo " Rebuilding ${DESTDIR} The whole thing"
106170268Sdarrenr	@echo "--------------------------------------------------------------"
107255332Scy	@echo
108145510Sdarrenr	${MAKE} depend all install
109145510Sdarrenr	cd ${.CURDIR}/share/man &&		${MAKE} makedb
110145510Sdarrenr
111145510Sdarrenrreinstall:	hierarchy mk includes
112145510Sdarrenr	@echo "--------------------------------------------------------------"
113145510Sdarrenr	@echo " Reinstall ${DESTDIR} The whole thing"
114145510Sdarrenr	@echo "--------------------------------------------------------------"
115145510Sdarrenr	@echo
116145510Sdarrenr	${MAKE} install
117145510Sdarrenr	cd ${.CURDIR}/share/man &&		${MAKE} makedb
118145510Sdarrenr
119145510Sdarrenrhierarchy:
120145510Sdarrenr	@echo "--------------------------------------------------------------"
121145510Sdarrenr	@echo " Making hierarchy"
122145510Sdarrenr	@echo "--------------------------------------------------------------"
123145510Sdarrenr	cd ${.CURDIR}/etc &&		${MAKE} distrib-dirs
124145510Sdarrenr
125145510Sdarrenrupdate:
126145510Sdarrenr.if defined(SUP_UPDATE)
127145510Sdarrenr	@echo "--------------------------------------------------------------"
128145510Sdarrenr	@echo "Running sup"
129145510Sdarrenr	@echo "--------------------------------------------------------------"
130145510Sdarrenr	@sup -v ${SUPFILE}
131145510Sdarrenr.if defined(SUPFILE1)
132145510Sdarrenr	@sup -v ${SUPFILE1}
133145510Sdarrenr.endif
134145510Sdarrenr.if defined(SUPFILE2)
135145510Sdarrenr	@sup -v ${SUPFILE2}
136145510Sdarrenr.endif
137145510Sdarrenr.endif
138255332Scy.if defined(CVS_UPDATE)
139145510Sdarrenr	@echo "--------------------------------------------------------------"
140145510Sdarrenr	@echo "Updating /usr/src from cvs repository" ${CVSROOT}
141145510Sdarrenr	@echo "--------------------------------------------------------------"
142255332Scy	cd ${.CURDIR} &&  cvs update -P -d
143255332Scy.endif
144255332Scy
145255332Scycleandist:
146255332Scy.if !defined(NOCLEANDIR)
147255332Scy	@echo "--------------------------------------------------------------"
148255332Scy	@echo " Cleaning up the source tree, and rebuilding the obj tree"
149255332Scy	@echo "--------------------------------------------------------------"
150255332Scy	@echo
151255332Scy	here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
152145510Sdarrenr	if test -d /usr/obj -a ! -d $$dest; then \
153145510Sdarrenr		mkdir -p $$dest; \
154145510Sdarrenr	else \
155145510Sdarrenr		true; \
156145510Sdarrenr	fi; \
157145510Sdarrenr	cd $$dest && rm -rf ${SUBDIR}
158145510Sdarrenr	find . -name obj | xargs rm -rf
159145510Sdarrenr.if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
160145510Sdarrenr	# The cd is done as local may well be a symbolic link
161145510Sdarrenr	-cd local && find . -name obj | xargs rm -rf
162145510Sdarrenr.endif
163145510Sdarrenr.if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
164145510Sdarrenr	# The cd is done as local may well be a symbolic link
165145510Sdarrenr	-cd ports && find . -name obj | xargs rm -rf
166145510Sdarrenr.endif
167145510Sdarrenr	${MAKE} cleandir
168145510Sdarrenr	${MAKE} obj
169145510Sdarrenr.endif
170145510Sdarrenr
171145510Sdarrenrinstallmost:
172145510Sdarrenr	@echo "--------------------------------------------------------------"
173145510Sdarrenr	@echo " Installing programs only"
174145510Sdarrenr	@echo "--------------------------------------------------------------"
175145510Sdarrenr	cd ${.CURDIR}/bin	&&	${MAKE} ${.MAKEFLAGS} install
176145510Sdarrenr	cd ${.CURDIR}/sbin	&&	${MAKE} ${.MAKEFLAGS} install
177145510Sdarrenr	cd ${.CURDIR}/libexec	&&	${MAKE} ${.MAKEFLAGS} install
178145510Sdarrenr	cd ${.CURDIR}/usr.bin	&&	${MAKE} ${.MAKEFLAGS} install
179145510Sdarrenr	cd ${.CURDIR}/usr.sbin	&&	${MAKE} ${.MAKEFLAGS} install
180145510Sdarrenr	cd ${.CURDIR}/gnu/libexec &&	${MAKE} ${.MAKEFLAGS} install
181145510Sdarrenr	cd ${.CURDIR}/gnu/usr.bin &&	${MAKE} ${.MAKEFLAGS} install
182145510Sdarrenr	cd ${.CURDIR}/gnu/usr.sbin &&	${MAKE} ${.MAKEFLAGS} install
183145510Sdarrenr#.if defined(MAKE_EBONES) && !defined(NOCRYPT)
184145510Sdarrenr#	cd ${.CURDIR}/eBones	&&	${MAKE} ${.MAKEFLAGS} installmost
185145510Sdarrenr#.endif
186145510Sdarrenr#.if !defined(NOSECURE) && !defined(NOCRYPT)
187145510Sdarrenr#	cd ${.CURDIR}/secure	&&	${MAKE} ${.MAKEFLAGS} installmost
188145510Sdarrenr#.endif
189145510Sdarrenr
190145510Sdarrenrmost:
191145510Sdarrenr	@echo "--------------------------------------------------------------"
192145510Sdarrenr	@echo " Building programs only"
193145510Sdarrenr	@echo "--------------------------------------------------------------"
194145510Sdarrenr	cd ${.CURDIR}/bin	&&	${MAKE} ${.MAKEFLAGS} all
195145510Sdarrenr	cd ${.CURDIR}/sbin	&&	${MAKE} ${.MAKEFLAGS} all
196145510Sdarrenr	cd ${.CURDIR}/libexec	&&	${MAKE} ${.MAKEFLAGS} all
197145510Sdarrenr	cd ${.CURDIR}/usr.bin	&&	${MAKE} ${.MAKEFLAGS} all
198145510Sdarrenr	cd ${.CURDIR}/usr.sbin	&&	${MAKE} ${.MAKEFLAGS} all
199145510Sdarrenr	cd ${.CURDIR}/gnu/libexec &&	${MAKE} ${.MAKEFLAGS} all
200145510Sdarrenr	cd ${.CURDIR}/gnu/usr.bin &&	${MAKE} ${.MAKEFLAGS} all
201145510Sdarrenr	cd ${.CURDIR}/gnu/usr.sbin &&	${MAKE} ${.MAKEFLAGS} all
202145510Sdarrenr#.if defined(MAKE_EBONES) && !defined(NOCRYPT)
203145510Sdarrenr#	cd ${.CURDIR}/eBones	&&	${MAKE} ${.MAKEFLAGS} most
204145510Sdarrenr#.endif
205145510Sdarrenr#.if !defined(NOSECURE) && !defined(NOCRYPT)
206145510Sdarrenr#	cd ${.CURDIR}/secure	&&	${MAKE} ${.MAKEFLAGS} most
207145510Sdarrenr#.endif
208145510Sdarrenr
209145510Sdarrenrmk:
210145510Sdarrenr	@echo "--------------------------------------------------------------"
211145510Sdarrenr	@echo " Rebuilding ${DESTDIR}/usr/share/mk"
212145510Sdarrenr	@echo "--------------------------------------------------------------"
213145510Sdarrenr	cd ${.CURDIR}/share/mk &&		${MAKE} install
214145510Sdarrenr
215145510Sdarrenrincludes:
216145510Sdarrenr	@echo "--------------------------------------------------------------"
217145510Sdarrenr	@echo " Rebuilding ${DESTDIR}/usr/include"
218145510Sdarrenr	@echo "--------------------------------------------------------------"
219145510Sdarrenr	@echo
220145510Sdarrenr.if defined(CLOBBER)
221145510Sdarrenr	rm -rf ${DESTDIR}/usr/include/*
222145510Sdarrenr	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
223145510Sdarrenr		-p ${DESTDIR}/usr/include
224145510Sdarrenr.endif
225145510Sdarrenr	cd ${.CURDIR}/include &&		${MAKE} install
226145510Sdarrenr	cd ${.CURDIR}/gnu/include &&		${MAKE}	install
227145510Sdarrenr	cd ${.CURDIR}/gnu/lib/libreadline &&	${MAKE} beforeinstall
228145510Sdarrenr	cd ${.CURDIR}/gnu/lib/libregex &&	${MAKE} beforeinstall
229145510Sdarrenr	cd ${.CURDIR}/gnu/lib/libg++ &&         ${MAKE} beforeinstall
230145510Sdarrenr	cd ${.CURDIR}/gnu/lib/libdialog &&      ${MAKE} beforeinstall
231145510Sdarrenr.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
232145510Sdarrenr	cd ${.CURDIR}/eBones/include &&		${MAKE} beforeinstall
233145510Sdarrenr	cd ${.CURDIR}/eBones/lib/libkrb &&	${MAKE} beforeinstall
234145510Sdarrenr.endif
235145510Sdarrenr	cd ${.CURDIR}/lib/libc &&		${MAKE} beforeinstall
236145510Sdarrenr	cd ${.CURDIR}/lib/libcurses &&		${MAKE} beforeinstall
237145510Sdarrenr	cd ${.CURDIR}/lib/libedit &&		${MAKE} beforeinstall
238145510Sdarrenr	cd ${.CURDIR}/lib/libmd &&		${MAKE} beforeinstall
239145510Sdarrenr	cd ${.CURDIR}/lib/libmytinfo &&		${MAKE}	beforeinstall
240145510Sdarrenr	cd ${.CURDIR}/lib/libncurses &&		${MAKE}	beforeinstall
241145510Sdarrenr.if !defined(WANT_CSRG_LIBM)
242145510Sdarrenr	cd ${.CURDIR}/lib/msun &&		${MAKE} beforeinstall
243145510Sdarrenr.endif
244145510Sdarrenr	cd ${.CURDIR}/lib/libpcap &&		${MAKE} beforeinstall
245145510Sdarrenr	cd ${.CURDIR}/lib/librpcsvc &&		${MAKE} beforeinstall
246145510Sdarrenr	cd ${.CURDIR}/lib/libskey &&		${MAKE} beforeinstall
247145510Sdarrenr	cd ${.CURDIR}/lib/libtermcap &&		${MAKE}	beforeinstall
248145510Sdarrenr	cd ${.CURDIR}/lib/libcom_err &&		${MAKE} beforeinstall
249145510Sdarrenr	cd ${.CURDIR}/lib/libss &&		${MAKE} beforeinstall
250145510Sdarrenr	cd ${.CURDIR}/lib/libforms &&		${MAKE}	beforeinstall
251145510Sdarrenr	cd ${.CURDIR}/lib/libscsi &&		${MAKE}	beforeinstall
252145510Sdarrenr
253145510Sdarrenrlib-tools:
254145510Sdarrenr	@echo "--------------------------------------------------------------"
255145510Sdarrenr	@echo " Rebuilding tools needed to build the libraries"
256145510Sdarrenr	@echo "--------------------------------------------------------------"
257145510Sdarrenr	@echo
258145510Sdarrenr	cd ${.CURDIR}/gnu/usr.bin/ld && \
259145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
260145510Sdarrenr	cd ${.CURDIR}/usr.bin/ar && \
261145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
262145510Sdarrenr	cd ${.CURDIR}/usr.bin/ranlib && \
263255332Scy		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
264145510Sdarrenr	cd ${.CURDIR}/usr.bin/nm && \
265145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
266145510Sdarrenr	cd ${.CURDIR}/usr.bin/lex/lib && \
267145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
268145510Sdarrenr	cd ${.CURDIR}/usr.bin/compile_et && \
269145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR} && \
270145510Sdarrenr		rm -f /usr/sbin/compile_et
271145510Sdarrenr	cd ${.CURDIR}/usr.bin/mk_cmds && \
272145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
273145510Sdarrenr
274145510Sdarrenrlibraries:
275145510Sdarrenr	@echo "--------------------------------------------------------------"
276145510Sdarrenr	@echo " Rebuilding ${DESTDIR}/usr/lib"
277145510Sdarrenr	@echo "--------------------------------------------------------------"
278145510Sdarrenr	@echo
279145510Sdarrenr.if defined(CLOBBER)
280145510Sdarrenr	find ${DESTDIR}/usr/lib \! -name '*.s[ao].*' -a \! -type d | \
281145510Sdarrenr		xargs rm -rf
282145510Sdarrenr.endif
283145510Sdarrenr.if exists(lib/libcompat)
284145510Sdarrenr	cd ${.CURDIR}/lib/libcompat && \
285145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
286145510Sdarrenr.endif
287145510Sdarrenr.if exists(lib/libncurses)
288145510Sdarrenr	cd ${.CURDIR}/lib/libncurses && \
289145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
290145510Sdarrenr.endif
291145510Sdarrenr.if exists(lib/libtermcap)
292145510Sdarrenr	cd ${.CURDIR}/lib/libtermcap && \
293145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
294145510Sdarrenr.endif
295145510Sdarrenr.if exists(gnu)
296145510Sdarrenr	cd ${.CURDIR}/gnu/lib && \
297145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
298145510Sdarrenr	cd ${.CURDIR}/gnu/usr.bin/cc/libgcc && \
299145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
300145510Sdarrenr.endif
301145510Sdarrenr.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
302145510Sdarrenr	cd ${.CURDIR}/secure/lib && \
303145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
304255332Scy.endif
305255332Scy.if exists(lib)
306255332Scy	cd ${.CURDIR}/lib/csu/i386 && \
307145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
308145510Sdarrenr	cd ${.CURDIR}/lib && \
309145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
310255332Scy.endif
311145510Sdarrenr.if exists(usr.sbin/lex/lib)
312145510Sdarrenr	cd ${.CURDIR}/usr.bin/lex/lib && \
313255332Scy		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
314255332Scy.endif
315145510Sdarrenr.if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
316145510Sdarrenr	cd ${.CURDIR}/eBones/des && \
317145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
318255332Scy	cd ${.CURDIR}/eBones/lib && \
319255332Scy		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
320255332Scy.endif
321255332Scy.if exists(usr.sbin/pcvt/keycap)
322145510Sdarrenr	cd ${.CURDIR}/usr.sbin/pcvt/keycap && \
323145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
324145510Sdarrenr.endif
325145510Sdarrenr
326145510Sdarrenrbuild-tools:
327145510Sdarrenr	@echo "--------------------------------------------------------------"
328145510Sdarrenr	@echo " Rebuilding ${DESTDIR} C compiler, make, symorder, sgmlfmt and zic(8)"
329145510Sdarrenr	@echo "--------------------------------------------------------------"
330255332Scy	@echo
331145510Sdarrenr	cd ${.CURDIR}/gnu/usr.bin/cc && \
332145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
333145510Sdarrenr	cd ${.CURDIR}/usr.bin/make && \
334145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
335145510Sdarrenr	cd ${.CURDIR}/usr.bin/symorder && \
336145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
337145510Sdarrenr	cd ${.CURDIR}/usr.bin/sgmlfmt && \
338145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR} 
339145510Sdarrenr	cd ${.CURDIR}/share/sgml && \
340145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR} 
341145510Sdarrenr	cd ${.CURDIR}/usr.sbin/zic && \
342145510Sdarrenr		${MAKE} depend all install ${CLEANDIR} ${OBJDIR}
343145510Sdarrenr
344145510Sdarrenr.include <bsd.subdir.mk>
345145510Sdarrenr