2 # $Id: Makefile,v 1.195 1998/06/04 12:02:52 jb Exp $
4 # While porting to the another architecture include the bootstrap instead
7 .if exists(${.CURDIR}/Makefile.${MACHINE}) && defined(BOOTSTRAP_WORLD)
8 .include "${.CURDIR}/Makefile.${MACHINE}"
11 # Make command line options:
12 # -DCLOBBER will remove /usr/include
13 # -DMAKE_KERBEROS4 to build KerberosIV
14 # -DALLLANG to build documentation for all languages
15 # (where available -- see share/doc/Makefile)
17 # -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
18 # -DNOCLEAN do not clean at all
19 # -DNOTOOLS do not rebuild any tools first
20 # -DNOCRYPT will prevent building of crypt versions
21 # -DNOLKM do not build loadable kernel modules
22 # -DNOOBJDIR do not run ``${MAKE} obj''
23 # -DNOPROFILE do not build profiled libraries
24 # -DNOSECURE do not go into secure subdir
25 # -DNOGAMES do not go into games subdir
26 # -DNOSHARE do not go into share subdir
27 # -DNOINFO do not make or install info files
28 # -DNOLIBC_R do not build libc_r.
29 # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
32 # The intended user-driven targets are:
33 # buildworld - rebuild *everything*, including glue to help do upgrades
34 # installworld- install everything built by "buildworld"
35 # world - buildworld + installworld
36 # update - convenient way to update your source tree (eg: sup/cvs)
37 # most - build user commands, no libraries or include files
38 # installmost - install user commands, no libraries or include files
40 # Standard targets (not defined here) are documented in the makefiles in
41 # /usr/share/mk. These include:
42 # obj depend all install clean cleandepend cleanobj
44 .if (!make(world)) && (!make(buildworld)) && (!make(installworld))
45 .MAKEFLAGS:= -m ${.CURDIR}/share/mk ${.MAKEFLAGS}
48 # Put initial settings here.
51 # We must do share/info early so that installation of info `dir'
52 # entries works correctly. Do it first since it is less likely to
53 # grow dependencies on include and lib than vice versa.
54 .if exists(share/info)
58 # We must do include and lib early so that the perl *.ph generation
59 # works correctly as it uses the header files installed by this.
70 .if exists(games) && !defined(NOGAMES)
76 .if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && \
77 defined(MAKE_KERBEROS4)
86 .if exists(share) && !defined(NOSHARE)
98 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
101 .if exists(lkm) && !defined(NOLKM)
105 # etc must be last for "distribute" to work
106 .if exists(etc) && make(distribute)
110 # These are last, since it is nice to at least get the base system
111 # rebuilt before you do them.
112 .if defined(LOCAL_DIRS)
113 .for _DIR in ${LOCAL_DIRS}
114 .if exists(${_DIR}) & exists(${_DIR}/Makefile)
120 # Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR
121 .if defined(NOOBJDIR)
130 .if defined(NOCLEANDIR)
131 CLEANDIR= clean cleandepend
137 .if !defined(NOCLEAN) && ${.MAKEFLAGS:M-j} == ""
140 .if defined(_NODEPEND)
147 SUPFLAGS?= -g -L 2 -P -
150 # While building tools for bootstrapping, we don't need to waste time on
151 # shared or profiled libraries, shared linkage, or documentation, except
152 # when the tools won't get cleaned we must use the defaults for shared
153 # libraries and shared linkage (and this doesn't waste time).
154 # XXX actually, we do need to waste time building shared libraries.
157 MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
159 MK_FLAGS= -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED
165 # Attempt to rebuild and reinstall *everything*, with reasonable chance of
166 # success, regardless of how old your existing system is.
168 # >> Beware, it overwrites the local build environment! <<
171 @echo "--------------------------------------------------------------"
172 @echo "make world started on `LC_TIME=C date`"
173 @echo "--------------------------------------------------------------"
174 .if target(pre-world)
176 @echo "--------------------------------------------------------------"
177 @echo " Making 'pre-world' target"
178 @echo "--------------------------------------------------------------"
179 cd ${.CURDIR}; ${MAKE} pre-world
181 cd ${.CURDIR}; ${MAKE} buildworld
182 cd ${.CURDIR}; ${MAKE} -B installworld
183 .if target(post-world)
185 @echo "--------------------------------------------------------------"
186 @echo " Making 'post-world' target"
187 @echo "--------------------------------------------------------------"
188 cd ${.CURDIR}; ${MAKE} post-world
191 @echo "--------------------------------------------------------------"
192 @echo "make world completed on `LC_TIME=C date`"
193 @echo "--------------------------------------------------------------"
195 .if defined(MAKEOBJDIRPREFIX)
196 WORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp
198 WORLDTMP= /usr/obj${.CURDIR}/tmp
200 STRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin
201 TMPPATH= ${STRICTTMPPATH}:${PATH}
203 # XXX COMPILER_PATH is needed for finding cc1, ld and as
204 # XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecessary now
205 # that LIBRARY_PATH is set. We still can't use -nostdlib, since gcc
206 # wouldn't link *crt.o or libgcc if it were used.
207 # XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't
208 # want that - all compile-time library paths should be resolved by gcc.
209 # It fails for set[ug]id executables (are any used?).
210 COMPILER_ENV= BISON_SIMPLE=${WORLDTMP}/usr/share/misc/bison.simple \
211 COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \
212 GCC_EXEC_PREFIX=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib/ \
213 LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \
214 LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib
216 BMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t \
217 OBJFORMAT_PATH=${WORLDTMP}/usr/libexec:/usr/libexec
218 XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
219 OBJFORMAT_PATH=${WORLDTMP}/usr/libexec \
220 CFLAGS="-nostdinc ${CFLAGS}" # XXX -nostdlib
222 # used to compile and install 'make' in temporary build tree
223 MAKETMP= ${WORLDTMP}/make
224 IBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP}
226 BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
227 # cross make used for compilation
228 XMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
229 # cross make used for final installation
230 IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make
235 # Attempt to rebuild the entire system, with reasonable chance of
236 # success, regardless of how old your existing system is.
239 .if !defined(NOCLEAN)
241 @echo "--------------------------------------------------------------"
242 @echo " Cleaning up the temporary build tree"
243 @echo "--------------------------------------------------------------"
245 chflags -R noschg ${WORLDTMP}/
248 .if !defined(NOTOOLS)
250 @echo "--------------------------------------------------------------"
252 @echo "--------------------------------------------------------------"
253 mkdir -p ${WORLDTMP}/usr/bin ${MAKETMP}
255 cd ${.CURDIR}/usr.bin/make; \
256 MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \
257 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all; \
258 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install; \
259 ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean \
263 @echo "--------------------------------------------------------------"
264 @echo " Making hierarchy"
265 @echo "--------------------------------------------------------------"
266 cd ${.CURDIR}; ${BMAKE} hierarchy
267 .if !defined(NOCLEAN)
269 @echo "--------------------------------------------------------------"
270 @echo " Cleaning up the obj tree"
271 @echo "--------------------------------------------------------------"
272 cd ${.CURDIR}; ${BMAKE} ${CLEANDIR:S/^/par-/}
274 .if !defined(NOOBJDIR)
276 @echo "--------------------------------------------------------------"
277 @echo " Rebuilding the obj tree"
278 @echo "--------------------------------------------------------------"
279 cd ${.CURDIR}; ${BMAKE} par-${OBJDIR}
281 .if !defined(NOTOOLS)
283 @echo "--------------------------------------------------------------"
284 @echo " Rebuilding bootstrap tools"
285 @echo "--------------------------------------------------------------"
286 cd ${.CURDIR}; ${BMAKE} bootstrap
288 @echo "--------------------------------------------------------------"
289 @echo " Rebuilding tools necessary to build the include files"
290 @echo "--------------------------------------------------------------"
291 cd ${.CURDIR}; ${BMAKE} include-tools
294 @echo "--------------------------------------------------------------"
295 @echo " Rebuilding ${DESTDIR}/usr/include"
296 @echo "--------------------------------------------------------------"
297 cd ${.CURDIR}; SHARED=copies ${BMAKE} includes
299 @echo "--------------------------------------------------------------"
300 @echo " Rebuilding bootstrap libraries"
301 @echo "--------------------------------------------------------------"
302 cd ${.CURDIR}; ${BMAKE} bootstrap-libraries
303 .if !defined(NOTOOLS)
305 @echo "--------------------------------------------------------------"
306 @echo " Rebuilding tools needed to build libraries"
307 @echo "--------------------------------------------------------------"
308 cd ${.CURDIR}; ${BMAKE} lib-tools
310 .if !defined(NOTOOLS)
312 @echo "--------------------------------------------------------------"
313 @echo " Rebuilding all other tools needed to build the world"
314 @echo "--------------------------------------------------------------"
315 cd ${.CURDIR}; ${BMAKE} build-tools
317 .if !defined(_NODEPEND)
319 @echo "--------------------------------------------------------------"
320 @echo " Rebuilding dependencies"
321 @echo "--------------------------------------------------------------"
322 cd ${.CURDIR}; ${XMAKE} par-depend
325 @echo "--------------------------------------------------------------"
326 @echo " Building libraries"
327 @echo "--------------------------------------------------------------"
328 cd ${.CURDIR}; ${XMAKE} -DNOINFO -DNOMAN libraries
330 @echo "--------------------------------------------------------------"
331 @echo " Building everything.."
332 @echo "--------------------------------------------------------------"
333 cd ${.CURDIR}; ${XMAKE} all
338 # Installs everything compiled by a 'buildworld'.
341 cd ${.CURDIR}; ${IXMAKE} reinstall
346 # If you have a build server, you can NFS mount the source and obj directories
347 # and do a 'make reinstall' on the *client* to install new binaries from the
348 # most recent server build.
351 @echo "--------------------------------------------------------------"
352 @echo " Making hierarchy"
353 @echo "--------------------------------------------------------------"
354 cd ${.CURDIR}; ${MAKE} hierarchy
356 @echo "--------------------------------------------------------------"
357 @echo " Installing everything.."
358 @echo "--------------------------------------------------------------"
359 cd ${.CURDIR}; ${MAKE} install
360 .if ${MACHINE_ARCH} == "i386"
362 @echo "--------------------------------------------------------------"
363 @echo " Re-scanning the shared libraries.."
364 @echo "--------------------------------------------------------------"
365 cd ${.CURDIR}; ldconfig -R
368 @echo "--------------------------------------------------------------"
369 @echo " Rebuilding man page indexes"
370 @echo "--------------------------------------------------------------"
371 cd ${.CURDIR}/share/man; ${MAKE} makedb
376 # Update the source tree, by running sup and/or running cvs to update to the
380 .if defined(SUP_UPDATE)
381 @echo "--------------------------------------------------------------"
382 @echo "Running ${SUP}"
383 @echo "--------------------------------------------------------------"
384 @${SUP} ${SUPFLAGS} ${SUPFILE}
385 .if defined(SUPFILE1)
386 @${SUP} ${SUPFLAGS} ${SUPFILE1}
388 .if defined(SUPFILE2)
389 @${SUP} ${SUPFLAGS} ${SUPFILE2}
392 .if defined(CVS_UPDATE)
393 @echo "--------------------------------------------------------------"
394 @echo "Updating /usr/src from cvs repository" ${CVSROOT}
395 @echo "--------------------------------------------------------------"
396 cd ${.CURDIR}; cvs -q update -P -d
402 # Build most of the user binaries on the existing system libs and includes.
405 @echo "--------------------------------------------------------------"
406 @echo " Building programs only"
407 @echo "--------------------------------------------------------------"
408 cd ${.CURDIR}/bin; ${MAKE} all
409 cd ${.CURDIR}/sbin; ${MAKE} all
410 cd ${.CURDIR}/libexec; ${MAKE} all
411 cd ${.CURDIR}/usr.bin; ${MAKE} all
412 cd ${.CURDIR}/usr.sbin; ${MAKE} all
413 cd ${.CURDIR}/gnu/libexec; ${MAKE} all
414 cd ${.CURDIR}/gnu/usr.bin; ${MAKE} all
415 cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} all
416 #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
417 # cd ${.CURDIR}/kerberosIV; ${MAKE} most
419 #.if !defined(NOSECURE) && !defined(NOCRYPT)
420 # cd ${.CURDIR}/secure; ${MAKE} most
426 # Install the binaries built by the 'most' target. This does not include
427 # libraries or include files.
430 @echo "--------------------------------------------------------------"
431 @echo " Installing programs only"
432 @echo "--------------------------------------------------------------"
433 cd ${.CURDIR}/bin; ${MAKE} install
434 cd ${.CURDIR}/sbin; ${MAKE} install
435 cd ${.CURDIR}/libexec; ${MAKE} install
436 cd ${.CURDIR}/usr.bin; ${MAKE} install
437 cd ${.CURDIR}/usr.sbin; ${MAKE} install
438 cd ${.CURDIR}/gnu/libexec; ${MAKE} install
439 cd ${.CURDIR}/gnu/usr.bin; ${MAKE} install
440 cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} install
441 #.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
442 # cd ${.CURDIR}/kerberosIV; ${MAKE} installmost
444 #.if !defined(NOSECURE) && !defined(NOCRYPT)
445 # cd ${.CURDIR}/secure; ${MAKE} installmost
449 # ------------------------------------------------------------------------
451 # From here onwards are utility targets used by the 'make world' and
452 # related targets. If your 'world' breaks, you may like to try to fix
453 # the problem and manually run the following targets to attempt to
454 # complete the build. Beware, this is *not* guaranteed to work, you
455 # need to have a pretty good grip on the current state of the system
456 # to attempt to manually finish it. If in doubt, 'make world' again.
460 # heirarchy - ensure that all the needed directories are present
463 cd ${.CURDIR}/etc; ${MAKE} distrib-dirs
466 # bootstrap - [re]build tools needed to run the actual build, this includes
467 # tools needed by 'make depend', as some tools are needed to generate source
468 # for the dependency information to be gathered from.
472 rm -f ${DESTDIR}/usr/src/sys
473 ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src
474 cd ${.CURDIR}/include; find -dx . | cpio -dump ${DESTDIR}/usr/include
475 .for d in net netinet posix4 sys vm machine
476 if [ -h ${DESTDIR}/usr/include/$d ]; then \
477 rm -f ${DESTDIR}/usr/include/$d ; \
481 find -dx net netinet posix4 sys vm -name '*.h' -o -type d | \
482 cpio -dump ${DESTDIR}/usr/include
483 mkdir -p ${DESTDIR}/usr/include/machine
484 cd ${.CURDIR}/sys/${MACHINE_ARCH}/include; find -dx . -name '*.h' -o -type d | \
485 cpio -dump ${DESTDIR}/usr/include/machine
487 cd ${.CURDIR}/usr.bin/make; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
488 ${MAKE} ${MK_FLAGS} all; \
489 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
490 cd ${.CURDIR}/usr.bin/xinstall; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
491 ${MAKE} ${MK_FLAGS} all; \
492 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
493 cd ${.CURDIR}/usr.bin/lex; ${MAKE} bootstrap; \
494 ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
495 ${MAKE} ${MK_FLAGS} -DNOLIB all; \
496 ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} ${OBJDIR}
497 cd ${.CURDIR}/usr.sbin/mtree; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
498 ${MAKE} ${MK_FLAGS} all; \
499 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
501 cd ${.CURDIR}/include && ${MAKE} copies
503 .if !defined(NOOBJDIR)
504 cd ${.CURDIR}/usr.bin/lex; ${MAKE} ${OBJDIR}
508 # include-tools - generally the same as 'bootstrap', except that it's for
509 # things that are specifically needed to generate include files.
511 # XXX should be merged with bootstrap, it's not worth keeeping them separate.
512 # Well, maybe it is now. We force 'cleandepend' here to avoid dependencies
513 # on cleaned away headers in ${WORLDTMP}.
516 .for d in usr.bin/compile_et usr.bin/rpcgen
517 cd ${.CURDIR}/$d; ${MAKE} cleandepend; \
518 ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
519 ${MAKE} ${MK_FLAGS} all; \
520 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
524 # includes - possibly generate and install the include files.
528 rm -rf ${DESTDIR}/usr/include/*
529 mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
530 -p ${DESTDIR}/usr/include
532 cd ${.CURDIR}/include; ${MAKE} -B all install
533 cd ${.CURDIR}/gnu/include; ${MAKE} install
534 cd ${.CURDIR}/gnu/lib/libmp; ${MAKE} beforeinstall
535 cd ${.CURDIR}/gnu/lib/libobjc; ${MAKE} beforeinstall
536 cd ${.CURDIR}/gnu/lib/libreadline; ${MAKE} beforeinstall
537 cd ${.CURDIR}/gnu/lib/libregex; ${MAKE} beforeinstall
538 cd ${.CURDIR}/gnu/lib/libstdc++; ${MAKE} beforeinstall
539 cd ${.CURDIR}/gnu/lib/libg++; ${MAKE} beforeinstall
540 cd ${.CURDIR}/gnu/lib/libdialog; ${MAKE} beforeinstall
541 cd ${.CURDIR}/gnu/lib/libgmp; ${MAKE} beforeinstall
542 .if exists(secure) && !defined(NOCRYPT)
543 cd ${.CURDIR}/secure/lib/libdes; ${MAKE} beforeinstall
545 .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
546 cd ${.CURDIR}/kerberosIV/lib/libacl; ${MAKE} beforeinstall
547 cd ${.CURDIR}/kerberosIV/lib/libkadm; ${MAKE} beforeinstall
548 cd ${.CURDIR}/kerberosIV/lib/libkafs; ${MAKE} beforeinstall
549 cd ${.CURDIR}/kerberosIV/lib/libkdb; ${MAKE} beforeinstall
550 cd ${.CURDIR}/kerberosIV/lib/libkrb; ${MAKE} beforeinstall
551 cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall
553 cd ${.CURDIR}/lib/libtelnet; ${MAKE} beforeinstall
555 .if exists(${.CURDIR}/lib/csu/${MACHINE})
556 cd ${.CURDIR}/lib/csu/${MACHINE}; ${MAKE} beforeinstall
558 cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall
559 cd ${.CURDIR}/lib/libc; ${MAKE} beforeinstall
560 cd ${.CURDIR}/lib/libcalendar; ${MAKE} beforeinstall
561 cd ${.CURDIR}/lib/libcurses; ${MAKE} beforeinstall
562 cd ${.CURDIR}/lib/libdisk; ${MAKE} beforeinstall
563 cd ${.CURDIR}/lib/libedit; ${MAKE} beforeinstall
564 cd ${.CURDIR}/lib/libftpio; ${MAKE} beforeinstall
565 cd ${.CURDIR}/lib/libmd; ${MAKE} beforeinstall
566 cd ${.CURDIR}/lib/libmytinfo; ${MAKE} beforeinstall
567 cd ${.CURDIR}/lib/libncurses; ${MAKE} beforeinstall
568 .if !defined(WANT_CSRG_LIBM)
569 cd ${.CURDIR}/lib/msun; ${MAKE} beforeinstall
571 cd ${.CURDIR}/lib/libopie; ${MAKE} beforeinstall
572 cd ${.CURDIR}/lib/libpcap; ${MAKE} beforeinstall
573 cd ${.CURDIR}/lib/librpcsvc; ${MAKE} beforeinstall
574 cd ${.CURDIR}/lib/libskey; ${MAKE} beforeinstall
575 .if !defined(NOTCL) && exists (${.CURDIR}/contrib/tcl) && \
576 exists(${.CURDIR}/usr.bin/tclsh) && exists (${.CURDIR}/lib/libtcl)
577 cd ${.CURDIR}/lib/libtcl; ${MAKE} installhdrs
579 cd ${.CURDIR}/lib/libtermcap; ${MAKE} beforeinstall
580 cd ${.CURDIR}/lib/libcom_err; ${MAKE} beforeinstall
581 cd ${.CURDIR}/lib/libss; ${MAKE} -B hdrs beforeinstall
582 cd ${.CURDIR}/lib/libscsi; ${MAKE} beforeinstall
583 cd ${.CURDIR}/lib/libutil; ${MAKE} beforeinstall
584 cd ${.CURDIR}/lib/libvgl; ${MAKE} beforeinstall
585 cd ${.CURDIR}/lib/libz; ${MAKE} beforeinstall
586 cd ${.CURDIR}/usr.bin/f2c; ${MAKE} beforeinstall
587 cd ${.CURDIR}/usr.bin/lex; ${MAKE} beforeinstall
590 # Declare tools if they are not required on all architectures.
592 .if ${MACHINE_ARCH} == "i386"
594 _aout_ar = usr.bin/ar
595 _aout_as = gnu/usr.bin/as
596 _aout_ld = gnu/usr.bin/ld
597 _aout_nm = usr.bin/nm
598 _aout_ranlib = usr.bin/ranlib
599 _aout_size = usr.bin/size
600 _aout_strip = usr.bin/strip
601 _aout_ldconfig = sbin/ldconfig
602 _objformat = usr.bin/objformat
606 # lib-tools - build tools to compile and install the libraries.
608 # XXX gperf is required for cc
609 # XXX a new ld and tsort is required for cc
610 # XXX ldconfig is required at the end of reinstall/installworld.
626 gnu/usr.bin/binutils \
630 cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
631 ${MAKE} ${MK_FLAGS} all; \
632 ${MAKE} ${MK_FLAGS} -B install; \
633 ${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR}
637 # We have to know too much about ordering and subdirs in the lib trees:
639 # To satisfy shared library linkage when only the libraries being built
642 # libcom_err must be built before libss.
643 # libcrypt and libmd must be built before libskey.
644 # libm must be built before libtcl.
645 # libmytinfo must be built before libdialog and libncurses.
646 # libncurses must be built before libdialog.
647 # libtermcap must be built before libcurses, libedit and libreadline.
649 # Some libraries are built conditionally and/or are in inconsistently
652 .if exists(lib/csu/${MACHINE}.pcc)
653 _csu=lib/csu/${MACHINE}.pcc
655 _csu=lib/csu/${MACHINE}
658 # Build the "default" libcrypt first since it sets symlinks for static
659 # binaries such as /sbin/init. lib/Makefile builds the other if needed.
660 .if exists(secure) && !defined(NOSECURE) && !defined(NOCRYPT)
661 _libcrypt= secure/lib/libcrypt
663 _libcrypt= lib/libcrypt
666 .if defined(WANT_CSRG_LIBM)
673 # bootstrap-libraries - build just enough libraries for the bootstrap
674 # tools, and install them under ${WORLDTMP}.
676 # Build csu and libgcc early so that some tools get linked to the new
677 # versions (too late for the main tools, however). Then build the
678 # necessary prerequisite libraries (libtermcap just needs to be before
679 # libcurses, and this only matters for the NOCLEAN case when NOPIC is
682 # This is mostly wrong. The build tools must run on the host system,
683 # so they should use host libraries. We depend on the target being
684 # similar enough to the host for new target libraries to work on the
688 .for _lib in ${_csu} gnu/usr.bin/cc/libgcc lib/libtermcap \
689 gnu/lib/libregex gnu/lib/libreadline lib/libc \
690 ${_libcrypt} lib/libcurses lib/libedit ${_libm} \
691 lib/libmd lib/libutil lib/libz usr.bin/lex/lib
692 .if exists(${.CURDIR}/${_lib})
693 cd ${.CURDIR}/${_lib}; \
694 ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
695 ${MAKE} ${MK_FLAGS} all; \
696 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
701 # libraries - build all libraries, and install them under ${DESTDIR}.
703 # The ordering is not as special as for bootstrap-libraries. Build
704 # the prerequisites first, then build almost everything else in
705 # alphabetical order.
708 .for _lib in lib/libcom_err ${_libcrypt} ${_libm} lib/libmytinfo \
709 lib/libncurses lib/libtermcap \
710 gnu/lib gnu/usr.bin/cc/libgcc lib usr.bin/lex/lib usr.sbin/pcvt/keycap
711 .if exists(${.CURDIR}/${_lib})
712 cd ${.CURDIR}/${_lib}; ${MAKE} all; ${MAKE} -B install
715 .if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE)
716 cd ${.CURDIR}/secure/lib; ${MAKE} all; ${MAKE} -B install
718 .if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \
719 defined(MAKE_KERBEROS4)
720 cd ${.CURDIR}/kerberosIV/lib; ${MAKE} all; ${MAKE} -B install
723 # Exclude perl from the build-tools if NOPERL is defined.
727 _perl= gnu/usr.bin/perl/perl
731 # build-tools - build and install any other tools needed to complete the
732 # compile and install.
734 # bc and cpp are required to build groff. Otherwise, the order here is
735 # mostly historical, i.e., bogus.
736 # chmod is used to build gcc's tmpmultilib[2] at obscure times.
738 # XXX uname is a bug - the target should not depend on the host.
761 gnu/usr.bin/man/makewhatis \
765 gnu/usr.bin/texinfo \
800 cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
801 ${MAKE} ${MK_FLAGS} all; \
802 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
805 .for __target in clean cleandepend cleandir depend obj
806 .for entry in ${SUBDIR}
807 ${entry}.${__target}__D: .PHONY
808 @if test -d ${.CURDIR}/${entry}.${MACHINE}; then \
809 ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \
810 edir=${entry}.${MACHINE}; \
811 cd ${.CURDIR}/$${edir}; \
813 ${ECHODIR} "===> ${DIRPRFX}${entry}"; \
815 cd ${.CURDIR}/$${edir}; \
817 ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
819 par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
824 .include <bsd.subdir.mk>