]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - Makefile
This commit was generated by cvs2svn to compensate for changes in r31434,
[FreeBSD/FreeBSD.git] / Makefile
1 #
2 #       $Id: Makefile,v 1.154 1997/10/07 11:32:05 bde Exp $
3 #
4 # Make command line options:
5 #       -DCLOBBER will remove /usr/include
6 #       -DMAKE_KERBEROS4 to build KerberosIV
7 #       -DALLLANG to build documentation for all languages
8 #         (where available -- see share/doc/Makefile)
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 #       -DNOSHARE do not go into share subdir
19 #       -DNOINFO do not make or install info files
20 #       -DNOLIBC_R do not build libc_r.
21 #       LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
22
23 #
24 # The intended user-driven targets are:
25 # buildworld  - rebuild *everything*, including glue to help do upgrades
26 # installworld- install everything built by "buildworld"
27 # world       - buildworld + installworld
28 # update      - convenient way to update your source tree (eg: sup/cvs)
29 # most        - build user commands, no libraries or include files
30 # installmost - install user commands, no libraries or include files
31 #
32 # Standard targets (not defined here) are documented in the makefiles in
33 # /usr/share/mk.  These include:
34 #               obj depend all install clean cleandepend cleanobj
35
36 .if (!make(world)) && (!make(buildworld)) && (!make(installworld))
37 .MAKEFLAGS:=    ${.MAKEFLAGS} -m ${.CURDIR}/share/mk
38 .endif
39
40 # Put initial settings here.
41 SUBDIR=
42
43 # We must do share/info early so that installation of info `dir'
44 # entries works correctly.  Do it first since it is less likely to
45 # grow dependencies on include and lib than vice versa.
46 .if exists(share/info)
47 SUBDIR+= share/info
48 .endif
49
50 # We must do include and lib early so that the perl *.ph generation
51 # works correctly as it uses the header files installed by this.
52 .if exists(include)
53 SUBDIR+= include
54 .endif
55 .if exists(lib)
56 SUBDIR+= lib
57 .endif
58
59 .if exists(bin)
60 SUBDIR+= bin
61 .endif
62 .if exists(games) && !defined(NOGAMES)
63 SUBDIR+= games
64 .endif
65 .if exists(gnu)
66 SUBDIR+= gnu
67 .endif
68 .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
69 SUBDIR+= kerberosIV
70 .endif
71 .if exists(libexec)
72 SUBDIR+= libexec
73 .endif
74 .if exists(sbin)
75 SUBDIR+= sbin
76 .endif
77 .if exists(share) && !defined(NOSHARE)
78 SUBDIR+= share
79 .endif
80 .if exists(sys)
81 SUBDIR+= sys
82 .endif
83 .if exists(usr.bin)
84 SUBDIR+= usr.bin
85 .endif
86 .if exists(usr.sbin)
87 SUBDIR+= usr.sbin
88 .endif
89 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
90 SUBDIR+= secure
91 .endif
92 .if exists(lkm) && !defined(NOLKM)
93 SUBDIR+= lkm
94 .endif
95
96 # etc must be last for "distribute" to work
97 .if exists(etc) && make(distribute)
98 SUBDIR+= etc
99 .endif
100
101 # These are last, since it is nice to at least get the base system
102 # rebuilt before you do them.
103 .if defined(LOCAL_DIRS)
104 .for _DIR in ${LOCAL_DIRS}
105 .if exists(${_DIR}) & exists(${_DIR}/Makefile)
106 SUBDIR+= ${_DIR}
107 .endif
108 .endfor
109 .endif
110
111 # Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR
112 .if defined(NOOBJDIR)
113 OBJDIR=
114 .else
115 OBJDIR=         obj
116 .endif
117
118 .if defined(NOCLEAN)
119 CLEANDIR=
120 .else
121 .if defined(NOCLEANDIR)
122 CLEANDIR=       clean
123 .else
124 CLEANDIR=       cleandir
125 .endif
126 .endif
127
128 SUP?=           sup
129 SUPFLAGS?=      -v
130
131 #
132 # While building tools for bootstrapping, we dont need to waste time on
133 # profiled libraries or man pages.  This speeds things up somewhat.
134 #
135 MK_FLAGS=       -DNOINFO -DNOMAN -DNOPROFILE
136
137 #
138 # world
139 #
140 # Attempt to rebuild and reinstall *everything*, with reasonable chance of
141 # success, regardless of how old your existing system is.
142 #
143 # >> Beware, it overwrites the local build environment! <<
144 #
145 world:
146         @echo "--------------------------------------------------------------"
147         @echo "make world started on `LC_TIME=C date`"
148         @echo "--------------------------------------------------------------"
149 .if target(pre-world)
150         @echo
151         @echo "--------------------------------------------------------------"
152         @echo " Making 'pre-world' target"
153         @echo "--------------------------------------------------------------"
154         cd ${.CURDIR} && ${MAKE} pre-world
155 .endif
156         cd ${.CURDIR} && ${MAKE} buildworld
157         cd ${.CURDIR} && ${MAKE} -B installworld
158 .if target(post-world)
159         @echo
160         @echo "--------------------------------------------------------------"
161         @echo " Making 'post-world' target"
162         @echo "--------------------------------------------------------------"
163         cd ${.CURDIR} && ${MAKE} post-world
164 .endif
165         @echo
166         @echo "--------------------------------------------------------------"
167         @echo "make world completed on `LC_TIME=C date`"
168         @echo "--------------------------------------------------------------"
169
170 .if defined(MAKEOBJDIRPREFIX)
171 WORLDTMP=       ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp
172 .else
173 WORLDTMP=       /usr/obj${.CURDIR}/tmp
174 .endif
175 STRICTTMPPATH=  ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin
176 TMPPATH=        ${STRICTTMPPATH}:${PATH}
177
178 # XXX COMPILER_PATH is needed for finding cc1, ld and as
179 # XXX GCC_EXEC_PREFIX is for *crt.o.  It is probably unnecssary now
180 #       tbat LIBRARY_PATH is set.  We still can't use -nostdlib, since gcc
181 #       wouldn't link *crt.o or libgcc if it were used.
182 # XXX LD_LIBRARY_PATH is for ld.so.  It is also used by ld, although we don't
183 #       want that - all compile-time library paths should be resolved by gcc.
184 #       It fails for set[ug]id executables (are any used?).
185 COMPILER_ENV=   BISON_SIMPLE=${WORLDTMP}/usr/share/misc/bison.simple \
186                 COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \
187                 GCC_EXEC_PREFIX=${WORLDTMP}/usr/lib/ \
188                 LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \
189                 LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib
190
191 BMAKEENV=       PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t
192 XMAKEENV=       PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
193                 CC='cc -nostdinc'       # XXX -nostdlib
194
195 # used to compile and install 'make' in temporary build tree
196 IBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP}
197 # bootstrap make
198 BMAKE=  ${BMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP}
199 # cross make used for compilation
200 XMAKE=  ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP}
201 # cross make used for final installation
202 IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE}
203
204 #
205 # buildworld
206 #
207 # Attempt to rebuild the entire system, with reasonable chance of
208 # success, regardless of how old your existing system is.
209 #
210 buildworld:
211 .if !defined(NOCLEAN)
212         @echo
213         @echo "--------------------------------------------------------------"
214         @echo " Cleaning up the temporary build tree"
215         @echo "--------------------------------------------------------------"
216         mkdir -p ${WORLDTMP}
217         chflags -R noschg ${WORLDTMP}/
218         rm -rf ${WORLDTMP}
219 .endif
220         @echo
221         @echo "--------------------------------------------------------------"
222         @echo " Making make"
223         @echo "--------------------------------------------------------------"
224         mkdir -p ${WORLDTMP}/usr/bin
225 .if !defined(NOCLEAN) || !defined(NOOBJDIR)
226         cd ${.CURDIR}/usr.bin/make && \
227                 ${IBMAKE} -I${.CURDIR}/share/mk ${CLEANDIR} ${OBJDIR}
228 .endif
229         cd ${.CURDIR}/usr.bin/make && \
230                 ${IBMAKE} -I${.CURDIR}/share/mk depend && \
231                 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \
232                 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install && \
233                 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean cleandepend
234         @echo
235         @echo "--------------------------------------------------------------"
236         @echo " Making hierarchy"
237         @echo "--------------------------------------------------------------"
238         cd ${.CURDIR} && ${BMAKE} hierarchy
239 .if !defined(NOCLEAN)
240         @echo
241         @echo "--------------------------------------------------------------"
242         @echo " Cleaning up the obj tree"
243         @echo "--------------------------------------------------------------"
244         cd ${.CURDIR} && ${BMAKE} par-${CLEANDIR}
245 .endif
246 .if !defined(NOOBJDIR)
247         @echo
248         @echo "--------------------------------------------------------------"
249         @echo " Rebuilding the obj tree"
250         @echo "--------------------------------------------------------------"
251         cd ${.CURDIR} && ${BMAKE} par-obj
252 .endif
253         @echo
254         @echo "--------------------------------------------------------------"
255         @echo " Rebuilding bootstrap tools"
256         @echo "--------------------------------------------------------------"
257         cd ${.CURDIR} && ${BMAKE} bootstrap
258         @echo
259         @echo "--------------------------------------------------------------"
260         @echo " Rebuilding tools necessary to build the include files"
261         @echo "--------------------------------------------------------------"
262         cd ${.CURDIR} && ${BMAKE} include-tools
263         @echo
264         @echo "--------------------------------------------------------------"
265         @echo " Rebuilding /usr/include"
266         @echo "--------------------------------------------------------------"
267         cd ${.CURDIR} && SHARED=symlinks ${BMAKE} includes
268         @echo
269         @echo "--------------------------------------------------------------"
270         @echo " Rebuilding tools needed to build the libraries"
271         @echo "--------------------------------------------------------------"
272         cd ${.CURDIR} && ${BMAKE} lib-tools
273         @echo
274         @echo "--------------------------------------------------------------"
275         @echo " Rebuilding /usr/lib"
276         @echo "--------------------------------------------------------------"
277         cd ${.CURDIR} && ${BMAKE} libraries
278         @echo
279         @echo "--------------------------------------------------------------"
280         @echo " Rebuilding all other tools needed to build the world"
281         @echo "--------------------------------------------------------------"
282         cd ${.CURDIR} && ${BMAKE} build-tools
283         @echo
284         @echo "--------------------------------------------------------------"
285         @echo " Rebuilding dependencies"
286         @echo "--------------------------------------------------------------"
287         cd ${.CURDIR} && ${XMAKE} par-depend
288         @echo
289         @echo "--------------------------------------------------------------"
290         @echo " Building everything.."
291         @echo "--------------------------------------------------------------"
292         cd ${.CURDIR} && ${XMAKE} all
293
294 #
295 # installworld
296 #
297 # Installs everything compiled by a 'buildworld'.
298 #
299 installworld:
300         cd ${.CURDIR} && ${IXMAKE} reinstall
301
302 #
303 # reinstall
304 #
305 # If you have a build server, you can NFS mount the source and obj directories
306 # and do a 'make reinstall' on the *client* to install new binaries from the
307 # most recent server build.
308 #
309 reinstall:
310         @echo "--------------------------------------------------------------"
311         @echo " Making hierarchy"
312         @echo "--------------------------------------------------------------"
313         cd ${.CURDIR} && ${MAKE} hierarchy
314         @echo
315         @echo "--------------------------------------------------------------"
316         @echo " Installing everything.."
317         @echo "--------------------------------------------------------------"
318         cd ${.CURDIR} && ${MAKE} install
319         @echo
320         @echo "--------------------------------------------------------------"
321         @echo " Rebuilding man page indexes"
322         @echo "--------------------------------------------------------------"
323         cd ${.CURDIR}/share/man && ${MAKE} makedb
324
325 #
326 # update
327 #
328 # Update the source tree, by running sup and/or running cvs to update to the
329 # latest copy.
330 #
331 update:
332 .if defined(SUP_UPDATE)
333         @echo "--------------------------------------------------------------"
334         @echo "Running sup"
335         @echo "--------------------------------------------------------------"
336         @${SUP} ${SUPFLAGS} ${SUPFILE}
337 .if defined(SUPFILE1)
338         @${SUP} ${SUPFLAGS} ${SUPFILE1}
339 .endif
340 .if defined(SUPFILE2)
341         @${SUP} ${SUPFLAGS} ${SUPFILE2}
342 .endif
343 .endif
344 .if defined(CVS_UPDATE)
345         @echo "--------------------------------------------------------------"
346         @echo "Updating /usr/src from cvs repository" ${CVSROOT}
347         @echo "--------------------------------------------------------------"
348         cd ${.CURDIR} && cvs -q update -P -d
349 .endif
350
351 #
352 # most
353 #
354 # Build most of the user binaries on the existing system libs and includes.
355 #
356 most:
357         @echo "--------------------------------------------------------------"
358         @echo " Building programs only"
359         @echo "--------------------------------------------------------------"
360         cd ${.CURDIR}/bin       &&      ${MAKE} all
361         cd ${.CURDIR}/sbin      &&      ${MAKE} all
362         cd ${.CURDIR}/libexec   &&      ${MAKE} all
363         cd ${.CURDIR}/usr.bin   &&      ${MAKE} all
364         cd ${.CURDIR}/usr.sbin  &&      ${MAKE} all
365         cd ${.CURDIR}/gnu/libexec &&    ${MAKE} all
366         cd ${.CURDIR}/gnu/usr.bin &&    ${MAKE} all
367         cd ${.CURDIR}/gnu/usr.sbin &&   ${MAKE} all
368 #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
369 #       cd ${.CURDIR}/kerberosIV        &&      ${MAKE} most
370 #.endif
371 #.if !defined(NOSECURE) && !defined(NOCRYPT)
372 #       cd ${.CURDIR}/secure    &&      ${MAKE} most
373 #.endif
374
375 #
376 # installmost
377 #
378 # Install the binaries built by the 'most' target.  This does not include
379 # libraries or include files.
380 #
381 installmost:
382         @echo "--------------------------------------------------------------"
383         @echo " Installing programs only"
384         @echo "--------------------------------------------------------------"
385         cd ${.CURDIR}/bin       &&      ${MAKE} install
386         cd ${.CURDIR}/sbin      &&      ${MAKE} install
387         cd ${.CURDIR}/libexec   &&      ${MAKE} install
388         cd ${.CURDIR}/usr.bin   &&      ${MAKE} install
389         cd ${.CURDIR}/usr.sbin  &&      ${MAKE} install
390         cd ${.CURDIR}/gnu/libexec &&    ${MAKE} install
391         cd ${.CURDIR}/gnu/usr.bin &&    ${MAKE} install
392         cd ${.CURDIR}/gnu/usr.sbin &&   ${MAKE} install
393 #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
394 #       cd ${.CURDIR}/kerberosIV &&     ${MAKE} installmost
395 #.endif
396 #.if !defined(NOSECURE) && !defined(NOCRYPT)
397 #       cd ${.CURDIR}/secure    &&      ${MAKE} installmost
398 #.endif
399
400 #
401 # ------------------------------------------------------------------------
402 #
403 # From here onwards are utility targets used by the 'make world' and
404 # related targets.  If your 'world' breaks, you may like to try to fix
405 # the problem and manually run the following targets to attempt to
406 # complete the build.  Beware, this is *not* guaranteed to work, you
407 # need to have a pretty good grip on the current state of the system
408 # to attempt to manually finish it.  If in doubt, 'make world' again.
409 #
410
411 #
412 # heirarchy - ensure that all the needed directories are present
413 #
414 hierarchy:
415         cd ${.CURDIR}/etc &&            ${MAKE} distrib-dirs
416
417 #
418 # bootstrap - [re]build tools needed to run the actual build, this includes
419 # tools needed by 'make depend', as some tools are needed to generate source
420 # for the dependency information to be gathered from.
421 #
422 bootstrap:
423 .if defined(DESTDIR)
424         rm -f ${DESTDIR}/usr/src/sys
425         ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src
426         cd ${.CURDIR}/include && find -dx . | cpio -dump ${DESTDIR}/usr/include
427         cd ${.CURDIR}/include && make symlinks
428 .endif
429         cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \
430                 ${MAKE} ${MK_FLAGS} all && \
431                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
432         cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} depend && \
433                 ${MAKE} ${MK_FLAGS} all && \
434                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
435         cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} depend && \
436                 ${MAKE} ${MK_FLAGS} -DNOLIB all && \
437                 ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR}
438 .if !defined(NOOBJDIR)
439         cd ${.CURDIR}/usr.bin/lex && ${MAKE} obj
440 .endif
441
442 #
443 # include-tools - generally the same as 'bootstrap', except that it's for
444 # things that are specifically needed to generate include files.
445 #
446 # XXX should be merged with bootstrap, it's not worth keeeping them separate.
447 # Well, maybe it is now.  We force 'cleandepend' here to avoid dependencies
448 # on cleaned away headers in ${WORLDTMP}.
449 #
450 include-tools:
451         cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \
452                 ${MAKE} ${MK_FLAGS} all && \
453                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
454
455 #
456 # includes - possibly generate and install the include files.
457 #
458 includes:
459 .if defined(CLOBBER)
460         rm -rf ${DESTDIR}/usr/include/*
461         mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
462                 -p ${DESTDIR}/usr/include
463 .endif
464         cd ${.CURDIR}/include &&                ${MAKE} -B all install
465         cd ${.CURDIR}/gnu/include &&            ${MAKE} install
466         cd ${.CURDIR}/gnu/lib/libmp &&          ${MAKE} beforeinstall
467         cd ${.CURDIR}/gnu/lib/libobjc &&        ${MAKE} beforeinstall
468         cd ${.CURDIR}/gnu/lib/libreadline &&    ${MAKE} beforeinstall
469         cd ${.CURDIR}/gnu/lib/libregex &&       ${MAKE} beforeinstall
470         cd ${.CURDIR}/gnu/lib/libstdc++ &&      ${MAKE} beforeinstall
471         cd ${.CURDIR}/gnu/lib/libg++ &&         ${MAKE} beforeinstall
472         cd ${.CURDIR}/gnu/lib/libdialog &&      ${MAKE} beforeinstall
473         cd ${.CURDIR}/gnu/lib/libgmp &&         ${MAKE} beforeinstall
474 .if exists(secure) && !defined(NOCRYPT)
475         cd ${.CURDIR}/secure/lib/libdes &&      ${MAKE} beforeinstall
476 .endif
477 .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
478         cd ${.CURDIR}/kerberosIV/lib/libacl &&  ${MAKE} beforeinstall
479         cd ${.CURDIR}/kerberosIV/lib/libkadm && ${MAKE} beforeinstall
480         cd ${.CURDIR}/kerberosIV/lib/libkafs && ${MAKE} beforeinstall
481         cd ${.CURDIR}/kerberosIV/lib/libkdb &&  ${MAKE} beforeinstall
482         cd ${.CURDIR}/kerberosIV/lib/libkrb &&  ${MAKE} beforeinstall
483         cd ${.CURDIR}/kerberosIV/lib/libtelnet && ${MAKE} beforeinstall
484 .else
485         cd ${.CURDIR}/lib/libtelnet &&          ${MAKE} beforeinstall
486 .endif
487         cd ${.CURDIR}/lib/csu/i386 &&           ${MAKE} beforeinstall
488         cd ${.CURDIR}/lib/libalias &&           ${MAKE} beforeinstall
489         cd ${.CURDIR}/lib/libc &&               ${MAKE} beforeinstall
490         cd ${.CURDIR}/lib/libcurses &&          ${MAKE} beforeinstall
491         cd ${.CURDIR}/lib/libdisk &&            ${MAKE} beforeinstall
492         cd ${.CURDIR}/lib/libedit &&            ${MAKE} beforeinstall
493         cd ${.CURDIR}/lib/libftpio &&           ${MAKE} beforeinstall
494         cd ${.CURDIR}/lib/libmd &&              ${MAKE} beforeinstall
495         cd ${.CURDIR}/lib/libmytinfo &&         ${MAKE} beforeinstall
496         cd ${.CURDIR}/lib/libncurses &&         ${MAKE} beforeinstall
497 .if !defined(WANT_CSRG_LIBM)
498         cd ${.CURDIR}/lib/msun &&               ${MAKE} beforeinstall
499 .endif
500         cd ${.CURDIR}/lib/libopie &&            ${MAKE} beforeinstall
501         cd ${.CURDIR}/lib/libpcap &&            ${MAKE} beforeinstall
502         cd ${.CURDIR}/lib/librpcsvc &&          ${MAKE} beforeinstall
503         cd ${.CURDIR}/lib/libskey &&            ${MAKE} beforeinstall
504 .if !defined(NOTCL) && exists (${.CURDIR}/contrib/tcl) && \
505         exists(${.CURDIR}/usr.bin/tclsh) && exists (${.CURDIR}/lib/libtcl)
506         cd ${.CURDIR}/lib/libtcl &&             ${MAKE} installhdrs
507 .endif
508         cd ${.CURDIR}/lib/libtermcap &&         ${MAKE} beforeinstall
509         cd ${.CURDIR}/lib/libcom_err &&         ${MAKE} beforeinstall
510         cd ${.CURDIR}/lib/libss &&              ${MAKE} beforeinstall
511         cd ${.CURDIR}/lib/libscsi &&            ${MAKE} beforeinstall
512         cd ${.CURDIR}/lib/libutil &&            ${MAKE} beforeinstall
513         cd ${.CURDIR}/lib/libvgl &&             ${MAKE} beforeinstall
514         cd ${.CURDIR}/lib/libz &&               ${MAKE} beforeinstall
515         cd ${.CURDIR}/usr.bin/f2c &&            ${MAKE} beforeinstall
516         cd ${.CURDIR}/usr.bin/lex &&            ${MAKE} beforeinstall
517
518 #
519 # lib-tools - build tools to compile and install the libraries.
520 #
521 # XXX gperf is required for cc
522 # XXX a new ld and tsort is required for cc
523 lib-tools:
524 .for d in                               \
525                 gnu/usr.bin/gperf       \
526                 gnu/usr.bin/ld          \
527                 usr.bin/tsort           \
528                 gnu/usr.bin/as          \
529                 gnu/usr.bin/bison       \
530                 gnu/usr.bin/cc          \
531                 usr.bin/ar              \
532                 usr.bin/compile_et      \
533                 usr.bin/lex/lib         \
534                 usr.bin/mk_cmds         \
535                 usr.bin/nm              \
536                 usr.bin/ranlib          \
537                 usr.bin/uudecode
538         cd ${.CURDIR}/$d && ${MAKE} depend && \
539                 ${MAKE} ${MK_FLAGS} all && \
540                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
541 .endfor
542
543 #
544 # libraries - build and install the libraries
545 #
546 libraries:
547 .if exists(lib/csu/i386)
548         cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \
549                 ${MAKE} ${MK_FLAGS} all && \
550                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
551 .endif
552 .if exists(lib/libcompat)
553         cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \
554                 ${MAKE} ${MK_FLAGS} all && \
555                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
556 .endif
557 .if exists(lib/libncurses)
558         cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \
559                 ${MAKE} ${MK_FLAGS} all && \
560                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
561 .endif
562 .if exists(lib/libtermcap)
563         cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \
564                 ${MAKE} ${MK_FLAGS} all && \
565                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
566 .endif
567 .if exists(gnu)
568         cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \
569                 ${MAKE} ${MK_FLAGS} all && \
570                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
571 .endif
572 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
573         cd ${.CURDIR}/secure/lib && ${MAKE} depend && \
574                 ${MAKE} ${MK_FLAGS} all && \
575                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
576 .endif
577 .if exists(lib)
578         cd ${.CURDIR}/lib && ${MAKE} depend && \
579                 ${MAKE} ${MK_FLAGS} all && \
580                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
581 .endif
582 .if exists(usr.bin/lex/lib)
583         cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \
584                 ${MAKE} ${MK_FLAGS} all && \
585                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
586 .endif
587 .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
588         cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && \
589                 ${MAKE} ${MK_FLAGS} all && \
590                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
591 .endif
592 .if exists(usr.sbin/pcvt/keycap)
593         cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} depend && \
594                 ${MAKE} ${MK_FLAGS} all && \
595                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
596 .endif
597
598 #
599 # build-tools - build and install any other tools needed to complete the
600 # compile and install.
601 # ifdef stale
602 # bc and cpp are required to build groff.  Otherwise, the order here is
603 # mostly historical, i.e., bogus.
604 # chmod is used to build gcc's tmpmultilib[2] at obscure times.
605 # endif stale
606 # XXX uname is a bug - the target should not depend on the host.
607 #
608 build-tools:
609 .for d in                               \
610                 bin/cat                 \
611                 bin/chmod               \
612                 bin/cp                  \
613                 bin/date                \
614                 bin/dd                  \
615                 bin/echo                \
616                 bin/expr                \
617                 bin/hostname            \
618                 bin/ln                  \
619                 bin/ls                  \
620                 bin/mkdir               \
621                 bin/mv                  \
622                 bin/rm                  \
623                 bin/sh                  \
624                 bin/test                \
625                 gnu/usr.bin/awk         \
626                 gnu/usr.bin/bc          \
627                 gnu/usr.bin/grep        \
628                 gnu/usr.bin/groff       \
629                 gnu/usr.bin/gzip        \
630                 gnu/usr.bin/man/makewhatis      \
631                 gnu/usr.bin/sort        \
632                 gnu/usr.bin/texinfo     \
633                 share/info              \
634                 usr.bin/basename        \
635                 usr.bin/cap_mkdb        \
636                 usr.bin/chflags         \
637                 usr.bin/cmp             \
638                 usr.bin/col             \
639                 usr.bin/cpp             \
640                 usr.bin/expand          \
641                 usr.bin/file2c          \
642                 usr.bin/find            \
643                 usr.bin/gencat          \
644                 usr.bin/lorder          \
645                 usr.bin/m4              \
646                 usr.bin/mkdep           \
647                 usr.bin/paste           \
648                 usr.bin/sed             \
649                 usr.bin/size            \
650                 usr.bin/soelim          \
651                 usr.bin/strip           \
652                 usr.bin/symorder        \
653                 usr.bin/touch           \
654                 usr.bin/tr              \
655                 usr.bin/true            \
656                 usr.bin/uname           \
657                 usr.bin/uuencode        \
658                 usr.bin/vgrind          \
659                 usr.bin/vi              \
660                 usr.bin/wc              \
661                 usr.bin/yacc            \
662                 usr.sbin/chown          \
663                 usr.sbin/mtree          \
664                 usr.sbin/zic
665         cd ${.CURDIR}/$d && ${MAKE} depend && \
666                 ${MAKE} ${MK_FLAGS} all && \
667                 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
668 .endfor
669
670 .for __target in clean cleandir obj depend
671 .for entry in ${SUBDIR}
672 ${entry}.${__target}__D: .PHONY
673         if test -d ${.CURDIR}/${entry}.${MACHINE}; then \
674                 ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \
675                 edir=${entry}.${MACHINE}; \
676                 cd ${.CURDIR}/$${edir}; \
677         else \
678                 ${ECHODIR} "===> ${DIRPRFX}${entry}"; \
679                 edir=${entry}; \
680                 cd ${.CURDIR}/$${edir}; \
681         fi; \
682         ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
683 .endfor
684 par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
685 .endfor
686
687 .include <bsd.subdir.mk>