]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - Makefile
This commit was generated by cvs2svn to compensate for changes in r17897,
[FreeBSD/FreeBSD.git] / Makefile
1 #
2 #       $Id: Makefile,v 1.96 1996/08/07 19:28:09 nate Exp $
3 #
4 # Make command line options:
5 #       -DCLOBBER will remove /usr/include
6 #       -DMAKE_LOCAL to add ./local to the SUBDIR list
7 #       -DMAKE_PORTS to add ./ports to the SUBDIR list
8 #       -DMAKE_EBONES to build eBones (KerberosIV)
9 #
10 #       -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
11 #       -DNOCLEAN do not clean at all
12 #       -DNOCRYPT will prevent building of crypt versions
13 #       -DNOLKM do not build loadable kernel modules
14 #       -DNOOBJDIR do not run ``${MAKE} obj''
15 #       -DNOPROFILE do not build profiled libraries
16 #       -DNOSECURE do not go into secure subdir
17 #       -DNOGAMES do not go into games subdir
18
19 #
20 # The intended user-driven targets are:
21 # world       - rebuild *everything*, including glue to help do upgrades.
22 # reinstall   - use an existing (eg: NFS mounted) build to do an update.
23 # update      - convenient way to update your source tree (eg: sup/cvs)
24 # most        - build user commands, no libraries or include files
25 # installmost - install user commands, no libraries or include files
26 # all         - run through SUBDIR and build everything.  This is an implicit
27 #               rule, not particularly useful for everybody.  Use 'world'.
28
29
30 # Put initial settings here.
31 SUBDIR=
32
33 # We must do include and lib first so that the perl *.ph generation
34 # works correctly as it uses the header files installed by this.
35 .if exists(include)
36 SUBDIR+= include
37 .endif
38 .if exists(lib)
39 SUBDIR+= lib
40 .endif
41
42 .if exists(bin)
43 SUBDIR+= bin
44 .endif
45 .if exists(games) && !defined(NOGAMES)
46 SUBDIR+= games
47 .endif
48 .if exists(gnu)
49 SUBDIR+= gnu
50 .endif
51 .if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
52 SUBDIR+= eBones
53 .endif
54 .if exists(libexec)
55 SUBDIR+= libexec
56 .endif
57 .if exists(sbin)
58 SUBDIR+= sbin
59 .endif
60 .if exists(share)
61 SUBDIR+= share
62 .endif
63 .if exists(sys)
64 SUBDIR+= sys
65 .endif
66 .if exists(usr.bin)
67 SUBDIR+= usr.bin
68 .endif
69 .if exists(usr.sbin)
70 SUBDIR+= usr.sbin
71 .endif
72 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
73 SUBDIR+= secure
74 .endif
75 .if exists(lkm) && !defined(NOLKM)
76 SUBDIR+= lkm
77 .endif
78
79 # etc must be last for "distribute" to work
80 .if exists(etc) && make(distribute)
81 SUBDIR+= etc
82 .endif
83
84 # These are last, since it is nice to at least get the base system
85 # rebuilt before you do them.
86 .if defined(MAKE_LOCAL) & exists(local) & exists(local/Makefile)
87 SUBDIR+= local
88 .endif
89 .if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile)
90 SUBDIR+= ports
91 .endif
92
93 # Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR
94 .if defined(NOOBJDIR)
95 OBJDIR=
96 .else
97 OBJDIR=         obj
98 .endif
99
100 .if defined(NOCLEAN)
101 CLEANDIR=
102 .else
103 .if defined(NOCLEANDIR)
104 CLEANDIR=       clean
105 .else
106 CLEANDIR=       cleandir
107 .endif
108 .endif
109
110 #
111 # While building tools for bootstrapping, we dont need to waste time on
112 # profiled libraries or man pages.  This speeds things up somewhat.
113 #
114 MK_FLAGS=       -DNOMAN -DNOPROFILE
115
116 #
117 # world
118 #
119 # Attempt to rebuild and reinstall *everything*, with reasonable chance of
120 # success, regardless of how old your existing system is.
121 #
122 # >> Beware, it overwrites the local build environment! <<
123 #
124 world:
125 .if target(pre-world)
126         @echo "--------------------------------------------------------------"
127         @echo " Making 'pre-world' target"
128         @echo "--------------------------------------------------------------"
129         cd ${.CURDIR} && ${MAKE} pre-world
130         @echo
131 .endif
132         @echo "--------------------------------------------------------------"
133         @echo " Making hierarchy"
134         @echo "--------------------------------------------------------------"
135         cd ${.CURDIR} && ${MAKE} hierarchy
136         @echo
137         @echo "--------------------------------------------------------------"
138         @echo " Rebuilding /usr/share/mk"
139         @echo "--------------------------------------------------------------"
140         cd ${.CURDIR} && ${MAKE} mk
141         @echo
142         @echo "--------------------------------------------------------------"
143         @echo " Cleaning up the source tree"
144         @echo "--------------------------------------------------------------"
145 .if defined(NOCLEAN)
146         @echo "Not cleaning anything! I sure hope you know what you are doing!"
147 .else
148         cd ${.CURDIR} && ${MAKE} ${CLEANDIR}
149 .endif
150         @echo
151 .if !defined(NOOBJDIR)
152         @echo "--------------------------------------------------------------"
153         @echo " Rebuilding the obj tree"
154         @echo "--------------------------------------------------------------"
155         cd ${.CURDIR} && ${MAKE} obj
156         @echo
157 .endif
158         @echo "--------------------------------------------------------------"
159         @echo " Rebuilding bootstrap tools"
160         @echo "--------------------------------------------------------------"
161         cd ${.CURDIR} && ${MAKE} bootstrap
162         @echo
163         @echo "--------------------------------------------------------------"
164         @echo " Rebuilding tools necessary to build the include files"
165         @echo "--------------------------------------------------------------"
166         cd ${.CURDIR} && ${MAKE} include-tools
167         @echo
168         @echo "--------------------------------------------------------------"
169         @echo " Rebuilding /usr/include"
170         @echo "--------------------------------------------------------------"
171         cd ${.CURDIR} && ${MAKE} includes
172         @echo
173         @echo "--------------------------------------------------------------"
174         @echo " Rebuilding tools needed to build the libraries"
175         @echo "--------------------------------------------------------------"
176         cd ${.CURDIR} && ${MAKE} lib-tools
177         @echo
178         @echo "--------------------------------------------------------------"
179         @echo " Rebuilding /usr/lib"
180         @echo "--------------------------------------------------------------"
181         cd ${.CURDIR} && ${MAKE} libraries
182         @echo
183         @echo "--------------------------------------------------------------"
184         @echo " Rebuilding C compiler, make, symorder, sgmlfmt and zic(8)"
185         @echo "--------------------------------------------------------------"
186         cd ${.CURDIR} && ${MAKE} build-tools
187         @echo
188         @echo "--------------------------------------------------------------"
189         @echo " Rebuilding.. The whole thing"
190         @echo "--------------------------------------------------------------"
191         cd ${.CURDIR} && ${MAKE} depend && ${MAKE} all install
192         cd ${.CURDIR}/share/man && ${MAKE} makedb
193 .if target(post-world)
194         @echo
195         @echo "--------------------------------------------------------------"
196         @echo " Making 'post-world' target"
197         @echo "--------------------------------------------------------------"
198         cd ${.CURDIR} && ${MAKE} post-world
199 .endif
200         @echo
201         @echo "--------------------------------------------------------------"
202         @echo "make world completed on `date`"
203
204 #
205 # reinstall
206 #
207 # If you have a build server, you can NFS mount the source and obj directories
208 # and do a 'make reinstall' on the *client* to install new binaries from the
209 # most recent server build.
210 #
211 reinstall:
212         @echo "--------------------------------------------------------------"
213         @echo " Making hierarchy"
214         @echo "--------------------------------------------------------------"
215         cd ${.CURDIR} && ${MAKE} hierarchy
216         @echo
217         @echo "--------------------------------------------------------------"
218         @echo " Rebuilding /usr/share/mk"
219         @echo "--------------------------------------------------------------"
220         cd ${.CURDIR} && ${MAKE} mk
221         @echo
222         @echo "--------------------------------------------------------------"
223         @echo " Rebuilding /usr/include"
224         @echo "--------------------------------------------------------------"
225         cd ${.CURDIR} && ${MAKE} includes
226         @echo
227         @echo "--------------------------------------------------------------"
228         @echo " Reinstalling..  The whole thing"
229         @echo "--------------------------------------------------------------"
230         @echo
231         cd ${.CURDIR} && ${MAKE} install
232         cd ${.CURDIR}/share/man && ${MAKE} makedb
233
234
235 #
236 # update
237 #
238 # Update the source tree, by running sup and/or running cvs to update to the
239 # latest copy.
240 #
241 update:
242 .if defined(SUP_UPDATE)
243         @echo "--------------------------------------------------------------"
244         @echo "Running sup"
245         @echo "--------------------------------------------------------------"
246         @sup -v ${SUPFILE}
247 .if defined(SUPFILE1)
248         @sup -v ${SUPFILE1}
249 .endif
250 .if defined(SUPFILE2)
251         @sup -v ${SUPFILE2}
252 .endif
253 .endif
254 .if defined(CVS_UPDATE)
255         @echo "--------------------------------------------------------------"
256         @echo "Updating /usr/src from cvs repository" ${CVSROOT}
257         @echo "--------------------------------------------------------------"
258         cd ${.CURDIR} &&  cvs -q update -P -d
259 .endif
260
261
262 #
263 # most
264 #
265 # Build most of the user binaries on the existing system libs and includes.
266 #
267 most:
268         @echo "--------------------------------------------------------------"
269         @echo " Building programs only"
270         @echo "--------------------------------------------------------------"
271         cd ${.CURDIR}/bin       &&      ${MAKE} ${.MAKEFLAGS} all
272         cd ${.CURDIR}/sbin      &&      ${MAKE} ${.MAKEFLAGS} all
273         cd ${.CURDIR}/libexec   &&      ${MAKE} ${.MAKEFLAGS} all
274         cd ${.CURDIR}/usr.bin   &&      ${MAKE} ${.MAKEFLAGS} all
275         cd ${.CURDIR}/usr.sbin  &&      ${MAKE} ${.MAKEFLAGS} all
276         cd ${.CURDIR}/gnu/libexec &&    ${MAKE} ${.MAKEFLAGS} all
277         cd ${.CURDIR}/gnu/usr.bin &&    ${MAKE} ${.MAKEFLAGS} all
278         cd ${.CURDIR}/gnu/usr.sbin &&   ${MAKE} ${.MAKEFLAGS} all
279 #.if defined(MAKE_EBONES) && !defined(NOCRYPT)
280 #       cd ${.CURDIR}/eBones    &&      ${MAKE} ${.MAKEFLAGS} most
281 #.endif
282 #.if !defined(NOSECURE) && !defined(NOCRYPT)
283 #       cd ${.CURDIR}/secure    &&      ${MAKE} ${.MAKEFLAGS} most
284 #.endif
285
286 #
287 # installmost
288 #
289 # Install the binaries built by the 'most' target.  This does not include
290 # libraries or include files.
291 #
292 installmost:
293         @echo "--------------------------------------------------------------"
294         @echo " Installing programs only"
295         @echo "--------------------------------------------------------------"
296         cd ${.CURDIR}/bin       &&      ${MAKE} ${.MAKEFLAGS} install
297         cd ${.CURDIR}/sbin      &&      ${MAKE} ${.MAKEFLAGS} install
298         cd ${.CURDIR}/libexec   &&      ${MAKE} ${.MAKEFLAGS} install
299         cd ${.CURDIR}/usr.bin   &&      ${MAKE} ${.MAKEFLAGS} install
300         cd ${.CURDIR}/usr.sbin  &&      ${MAKE} ${.MAKEFLAGS} install
301         cd ${.CURDIR}/gnu/libexec &&    ${MAKE} ${.MAKEFLAGS} install
302         cd ${.CURDIR}/gnu/usr.bin &&    ${MAKE} ${.MAKEFLAGS} install
303         cd ${.CURDIR}/gnu/usr.sbin &&   ${MAKE} ${.MAKEFLAGS} install
304 #.if defined(MAKE_EBONES) && !defined(NOCRYPT)
305 #       cd ${.CURDIR}/eBones    &&      ${MAKE} ${.MAKEFLAGS} installmost
306 #.endif
307 #.if !defined(NOSECURE) && !defined(NOCRYPT)
308 #       cd ${.CURDIR}/secure    &&      ${MAKE} ${.MAKEFLAGS} installmost
309 #.endif
310
311 #
312 # ------------------------------------------------------------------------
313 #
314 # From here onwards are utility targets used by the 'make world' and
315 # related targets.  If your 'world' breaks, you may like to try to fix
316 # the problem and manually run the following targets to attempt to
317 # complete the build.  Beware, this is *not* guaranteed to work, you
318 # need to have a pretty good grip on the current state of the system
319 # to attempt to manually finish it.  If in doubt, 'make world' again.
320 #
321
322 #
323 # heirarchy - ensure that all the needed directories are present
324 #
325 hierarchy:
326         cd ${.CURDIR}/etc &&            ${MAKE} distrib-dirs
327
328 #
329 # mk - update the /usr/share/mk makefiles.
330 #
331 mk:
332         cd ${.CURDIR}/share/mk &&       ${MAKE} install
333
334 #
335 # bootstrap - [re]build tools needed to run the actual build, this includes
336 # tools needed by 'make depend', as some tools are needed to generate source
337 # for the dependency information to be gathered from.
338 #
339 bootstrap:
340         cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \
341                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
342         cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} depend && \
343                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
344         cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} depend && \
345                 ${MAKE} ${MK_FLAGS} -DNOLIB all install ${CLEANDIR} ${OBJDIR}
346
347 #
348 # include-tools - generally the same as 'bootstrap', except that it's for
349 # things that are specifically needed to generate include files.
350 #
351 # XXX should be merged with bootstrap, it's not worth keeeping them seperate
352 #
353 include-tools:
354         cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} depend && \
355                 ${MAKE} ${MK_FLAGS} depend all install ${CLEANDIR} ${OBJDIR}
356
357 #
358 # includes - possibly generate and install the include files.
359 #
360 includes:
361 .if defined(CLOBBER)
362         rm -rf ${DESTDIR}/usr/include/*
363         mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
364                 -p ${DESTDIR}/usr/include
365 .endif
366         cd ${.CURDIR}/include &&                ${MAKE} install
367         cd ${.CURDIR}/gnu/include &&            ${MAKE} install
368         cd ${.CURDIR}/gnu/lib/libreadline &&    ${MAKE} beforeinstall
369         cd ${.CURDIR}/gnu/lib/libregex &&       ${MAKE} beforeinstall
370         cd ${.CURDIR}/gnu/lib/libg++ &&         ${MAKE} beforeinstall
371         cd ${.CURDIR}/gnu/lib/libdialog &&      ${MAKE} beforeinstall
372 .if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
373         cd ${.CURDIR}/eBones/include &&         ${MAKE} beforeinstall
374         cd ${.CURDIR}/eBones/lib/libkrb &&      ${MAKE} beforeinstall
375         cd ${.CURDIR}/eBones/lib/libkadm &&     ${MAKE} beforeinstall
376 .endif
377         cd ${.CURDIR}/lib/libc &&               ${MAKE} beforeinstall
378         cd ${.CURDIR}/lib/libcurses &&          ${MAKE} beforeinstall
379         cd ${.CURDIR}/lib/libedit &&            ${MAKE} beforeinstall
380         cd ${.CURDIR}/lib/libftpio &&           ${MAKE} beforeinstall
381         cd ${.CURDIR}/lib/libmd &&              ${MAKE} beforeinstall
382         cd ${.CURDIR}/lib/libmytinfo &&         ${MAKE} beforeinstall
383         cd ${.CURDIR}/lib/libncurses &&         ${MAKE} beforeinstall
384 .if !defined(WANT_CSRG_LIBM)
385         cd ${.CURDIR}/lib/msun &&               ${MAKE} beforeinstall
386 .endif
387         cd ${.CURDIR}/lib/libpcap &&            ${MAKE} beforeinstall
388         cd ${.CURDIR}/lib/librpcsvc &&          ${MAKE} beforeinstall
389         cd ${.CURDIR}/lib/libskey &&            ${MAKE} beforeinstall
390         cd ${.CURDIR}/lib/libtcl &&             ${MAKE} beforeinstall
391         cd ${.CURDIR}/lib/libtermcap &&         ${MAKE} beforeinstall
392         cd ${.CURDIR}/lib/libcom_err &&         ${MAKE} beforeinstall
393         cd ${.CURDIR}/lib/libss &&              ${MAKE} beforeinstall
394         cd ${.CURDIR}/lib/libscsi &&            ${MAKE} beforeinstall
395         cd ${.CURDIR}/lib/libutil &&            ${MAKE} beforeinstall
396
397 #
398 # lib-tools - build tools to compile and install the libraries.
399 #
400 lib-tools:
401         cd ${.CURDIR}/usr.bin/tsort && ${MAKE} depend && \
402                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
403         cd ${.CURDIR}/gnu/usr.bin/ld && ${MAKE} depend && \
404                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
405         cd ${.CURDIR}/usr.bin/ar && ${MAKE} depend && \
406                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
407         cd ${.CURDIR}/usr.bin/ranlib && ${MAKE} depend && \
408                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
409         cd ${.CURDIR}/usr.bin/nm && ${MAKE} depend && \
410                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
411         cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \
412                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
413         cd ${.CURDIR}/usr.bin/compile_et && ${MAKE} depend && \
414                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR} && \
415                 rm -f /usr/sbin/compile_et
416         cd ${.CURDIR}/usr.bin/mk_cmds && ${MAKE} depend && \
417                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
418
419 #
420 # libraries - build and install the libraries
421 #
422 libraries:
423 .if exists(lib/libcompat)
424         cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \
425                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
426 .endif
427 .if exists(lib/libncurses)
428         cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \
429                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
430 .endif
431 .if exists(lib/libtermcap)
432         cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \
433                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
434 .endif
435 .if exists(lib)
436         cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \
437                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
438 .endif
439 .if exists(gnu)
440         cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \
441                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
442         cd ${.CURDIR}/gnu/usr.bin/cc/libgcc && ${MAKE} depend && \
443                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
444 .endif
445 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
446         cd ${.CURDIR}/secure/lib && ${MAKE} depend && \
447                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
448 .endif
449 .if exists(lib)
450         cd ${.CURDIR}/lib && ${MAKE} depend && \
451                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
452 .endif
453 .if exists(usr.bin/lex/lib)
454         cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \
455                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
456 .endif
457 .if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
458         cd ${.CURDIR}/eBones/lib && ${MAKE} depend && \
459                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
460 .endif
461 .if exists(usr.sbin/pcvt/keycap)
462         cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} depend && \
463                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
464 .endif
465
466 #
467 # build-tools - build and install any other tools needed to complete the
468 # compile and install.
469 #
470 build-tools:
471         cd ${.CURDIR}/gnu/usr.bin/cc && ${MAKE} depend && \
472                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
473         cd ${.CURDIR}/usr.bin/symorder && ${MAKE} depend && \
474                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
475         cd ${.CURDIR}/usr.bin/sgmlfmt && ${MAKE} depend && \
476                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR} 
477         cd ${.CURDIR}/share/sgml && ${MAKE} depend && \
478                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR} 
479         cd ${.CURDIR}/usr.sbin/zic && ${MAKE} depend && \
480                 ${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
481
482 .include <bsd.subdir.mk>