]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - Makefile.inc1
This commit was generated by cvs2svn to compensate for changes in r55360,
[FreeBSD/FreeBSD.git] / Makefile.inc1
1 #
2 # $FreeBSD$
3 #
4 # Make command line options:
5 #       -DMAKE_KERBEROS4 to build KerberosIV
6 #       -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
7 #       -DNOCLEAN do not clean at all
8 #       -DNOCRYPT will prevent building of crypt versions
9 #       -DNOPROFILE do not build profiled libraries
10 #       -DNOSECURE do not go into secure subdir
11 #       -DNOGAMES do not go into games subdir
12 #       -DNOSHARE do not go into share subdir
13 #       -DNOINFO do not make or install info files
14 #       -DNOLIBC_R do not build libc_r.
15 #       -DNO_FORTRAN do not build g77 and related libraries.
16 #       LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
17
18 #
19 # The intended user-driven targets are:
20 # buildworld  - rebuild *everything*, including glue to help do upgrades
21 # installworld- install everything built by "buildworld"
22 # update      - convenient way to update your source tree (eg: sup/cvs)
23 # most        - build user commands, no libraries or include files
24 # installmost - install user commands, no libraries or include files
25 #
26 # Standard targets (not defined here) are documented in the makefiles in
27 # /usr/share/mk.  These include:
28 #               obj depend all install clean cleandepend cleanobj
29
30 # Put initial settings here.
31 SUBDIR=
32
33 # We must do share/info early so that installation of info `dir'
34 # entries works correctly.  Do it first since it is less likely to
35 # grow dependencies on include and lib than vice versa.
36 .if exists(${.CURDIR}/share/info)
37 SUBDIR+= share/info
38 .endif
39
40 # We must do include and lib early so that the perl *.ph generation
41 # works correctly as it uses the header files installed by this.
42 .if exists(${.CURDIR}/include)
43 SUBDIR+= include
44 .endif
45 .if exists(${.CURDIR}/lib)
46 SUBDIR+= lib
47 .endif
48
49 .if exists(${.CURDIR}/bin)
50 SUBDIR+= bin
51 .endif
52 .if exists(${.CURDIR}/games) && !defined(NOGAMES)
53 SUBDIR+= games
54 .endif
55 .if exists(${.CURDIR}/gnu)
56 SUBDIR+= gnu
57 .endif
58 .if exists(${.CURDIR}/kerberosIV) && exists(${.CURDIR}/crypto) && \
59     !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
60 SUBDIR+= kerberosIV
61 .endif
62 .if exists(${.CURDIR}/libexec)
63 SUBDIR+= libexec
64 .endif
65 .if exists(${.CURDIR}/sbin)
66 SUBDIR+= sbin
67 .endif
68 .if exists(${.CURDIR}/share) && !defined(NOSHARE)
69 SUBDIR+= share
70 .endif
71 .if exists(${.CURDIR}/sys)
72 SUBDIR+= sys
73 .endif
74 .if exists(${.CURDIR}/usr.bin)
75 SUBDIR+= usr.bin
76 .endif
77 .if exists(${.CURDIR}/usr.sbin)
78 SUBDIR+= usr.sbin
79 .endif
80 .if exists(${.CURDIR}/secure) && !defined(NOCRYPT) && !defined(NOSECURE)
81 SUBDIR+= secure
82 .endif
83
84 # etc must be last for "distribute" to work
85 .if exists(${.CURDIR}/etc)
86 SUBDIR+= etc
87 .endif
88
89 # These are last, since it is nice to at least get the base system
90 # rebuilt before you do them.
91 .if defined(LOCAL_DIRS)
92 .for _DIR in ${LOCAL_DIRS}
93 .if exists(${.CURDIR}/${_DIR}) & exists(${.CURDIR}/${_DIR}/Makefile)
94 SUBDIR+= ${_DIR}
95 .endif
96 .endfor
97 .endif
98
99 .if defined(NOCLEANDIR)
100 CLEANDIR=       clean cleandepend
101 .else
102 CLEANDIR=       cleandir
103 .endif
104
105 SUP?=           cvsup
106 SUPFLAGS?=      -g -L 2 -P -
107
108 MAKEOBJDIRPREFIX?=      /usr/obj
109 TARGET_ARCH?=   ${MACHINE_ARCH}
110 BUILD_ARCH!=    sysctl -n hw.machine_arch
111 .if ${BUILD_ARCH} == ${MACHINE_ARCH}
112 OBJTREE=        ${MAKEOBJDIRPREFIX}
113 .else
114 OBJTREE=        ${MAKEOBJDIRPREFIX}/${MACHINE_ARCH}
115 .endif
116 WORLDTMP=       ${OBJTREE}${.CURDIR}/${BUILD_ARCH}
117 # /usr/games added for fortune which depend on strfile
118 STRICTTMPPATH=  ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games
119 TMPPATH=        ${STRICTTMPPATH}:${PATH}
120
121 #
122 # Building a world goes through the following stages
123 #
124 # bootstrap-tool stage [BMAKE]
125 #       This stage is responsible for creating programs that
126 #       are needed for backward compatibility reasons. They
127 #       are not built as cross-tools.
128 # build-tool stage [TMAKE]
129 #       This stage is responsible for creating the object
130 #       tree and building any tools that are needed during
131 #       the build process.
132 # cross-tool stage [XMAKE]
133 #       This stage is responsible for creating any tools that
134 #       are needed for cross-builds. A cross-compiler is one
135 #       of them.
136 # world stage [WMAKE]
137 #       This stage actually builds the world.
138 # install stage (optional) [IMAKE]
139 #       This stage installs a previously built world.
140 #
141
142 # Common environment for bootstrap related stages
143 BOOTSTRAPENV=   MAKEOBJDIRPREFIX=${WORLDTMP} \
144                 DESTDIR=${WORLDTMP} \
145                 INSTALL="sh ${.CURDIR}/tools/install.sh" \
146                 MACHINE_ARCH=${BUILD_ARCH} \
147                 TOOLS_PREFIX=${WORLDTMP} \
148                 PATH=${TMPPATH}
149
150 # Common environment for world related stages
151 CROSSENV=       MAKEOBJDIRPREFIX=${OBJTREE} \
152                 COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \
153                 LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib \
154                 OBJFORMAT_PATH=${WORLDTMP}/usr/libexec \
155                 PERL5LIB=${WORLDTMP}/usr/libdata/perl/5.00503
156
157 # bootstrap-tool stage
158 BMAKEENV=       ${BOOTSTRAPENV}
159 BMAKE=          ${BMAKEENV} ${MAKE} -f Makefile.inc1 -DNOMAN -DNOINFO
160
161 # build-tool stage
162 TMAKEENV=       MAKEOBJDIRPREFIX=${OBJTREE} \
163                 INSTALL="sh ${.CURDIR}/tools/install.sh" \
164                 PATH=${TMPPATH}
165 TMAKE=          ${TMAKEENV} ${MAKE} -f Makefile.inc1
166
167 # cross-tool stage
168 XMAKEENV=       ${BOOTSTRAPENV} \
169                 TARGET_ARCH=${MACHINE_ARCH}
170 XMAKE=          ${XMAKEENV} ${MAKE} -f Makefile.inc1 -DNOMAN -DNOINFO \
171                 -DNO_FORTRAN -DNO_GDB
172
173 # world stage
174 WMAKEENV=       ${CROSSENV} \
175                 DESTDIR=${WORLDTMP} \
176                 INSTALL="sh ${.CURDIR}/tools/install.sh" \
177                 PATH=${TMPPATH}
178 WMAKE=          ${WMAKEENV} ${MAKE} -f Makefile.inc1
179
180 # install stage
181 IMAKEENV=       ${CROSSENV}
182 IMAKE=          ${IMAKEENV} ${MAKE} -f Makefile.inc1
183
184 USRDIRS=        usr/bin usr/lib/compat/aout usr/games usr/libdata/ldscripts \
185                 usr/libexec/${OBJFORMAT} usr/sbin usr/share/misc
186
187 .if ${MACHINE_ARCH} == "i386" && ${MACHINE} == "pc98"
188 USRDIRS+=       usr/libexec/aout
189 .endif
190
191 INCDIRS=        arpa g++/std objc protocols readline rpc rpcsvc openssl \
192                 security ss
193
194 #
195 # buildworld
196 #
197 # Attempt to rebuild the entire system, with reasonable chance of
198 # success, regardless of how old your existing system is.
199 #
200 buildworld:
201         @echo
202         @echo "--------------------------------------------------------------"
203         @echo ">>> Rebuilding the temporary build tree"
204         @echo "--------------------------------------------------------------"
205 .if !defined(NOCLEAN)
206         rm -rf ${WORLDTMP}
207 .else
208         for dir in bin games include lib sbin; do \
209                 rm -rf ${WORLDTMP}/usr/$$dir; \
210         done
211         rm -f ${WORLDTMP}/sys
212 .endif
213 .for _dir in ${USRDIRS}
214         mkdir -p ${WORLDTMP}/${_dir}
215 .endfor
216 .for _dir in ${INCDIRS}
217         mkdir -p ${WORLDTMP}/usr/include/${_dir}
218 .endfor
219         ln -sf ${.CURDIR}/sys ${WORLDTMP}/sys
220         @echo
221         @echo "--------------------------------------------------------------"
222         @echo ">>> stage 1: bootstrap tools"
223         @echo "--------------------------------------------------------------"
224         cd ${.CURDIR}; ${BMAKE} bootstrap-tools
225 .if !defined(NOCLEAN)
226         @echo
227         @echo "--------------------------------------------------------------"
228         @echo ">>> stage 2: cleaning up the object tree"
229         @echo "--------------------------------------------------------------"
230         cd ${.CURDIR}; ${TMAKE} ${CLEANDIR:S/^/par-/}
231 .endif
232         @echo
233         @echo "--------------------------------------------------------------"
234         @echo ">>> stage 2: rebuilding the object tree"
235         @echo "--------------------------------------------------------------"
236         cd ${.CURDIR}; ${TMAKE} par-obj
237         @echo
238         @echo "--------------------------------------------------------------"
239         @echo ">>> stage 2: build tools"
240         @echo "--------------------------------------------------------------"
241         cd ${.CURDIR}; ${TMAKE} build-tools
242         @echo
243         @echo "--------------------------------------------------------------"
244         @echo ">>> stage 3: cross tools"
245         @echo "--------------------------------------------------------------"
246         cd ${.CURDIR}; ${XMAKE} cross-tools
247         @echo
248         @echo "--------------------------------------------------------------"
249         @echo ">>> stage 4: populating ${WORLDTMP}/usr/include"
250         @echo "--------------------------------------------------------------"
251         cd ${.CURDIR}; ${WMAKE} SHARED=symlinks includes
252         @echo
253         @echo "--------------------------------------------------------------"
254         @echo ">>> stage 4: building libraries"
255         @echo "--------------------------------------------------------------"
256         cd ${.CURDIR}; ${WMAKE} -DNOINFO -DNOMAN libraries
257         @echo
258         @echo "--------------------------------------------------------------"
259         @echo ">>> stage 4: make dependencies"
260         @echo "--------------------------------------------------------------"
261         cd ${.CURDIR}; ${WMAKE} par-depend
262         @echo
263         @echo "--------------------------------------------------------------"
264         @echo ">>> stage 4: building everything.."
265         @echo "--------------------------------------------------------------"
266         cd ${.CURDIR}; ${WMAKE} all
267
268 everything:
269         @echo "--------------------------------------------------------------"
270         @echo ">>> Building everything.."
271         @echo "--------------------------------------------------------------"
272         cd ${.CURDIR}; ${WMAKE} all
273
274 #
275 # installworld
276 #
277 # Installs everything compiled by a 'buildworld'.
278 #
279 installworld:
280         cd ${.CURDIR}; ${IMAKE} reinstall
281
282 #
283 # reinstall
284 #
285 # If you have a build server, you can NFS mount the source and obj directories
286 # and do a 'make reinstall' on the *client* to install new binaries from the
287 # most recent server build.
288 #
289 reinstall:
290         @echo "--------------------------------------------------------------"
291         @echo ">>> Making hierarchy"
292         @echo "--------------------------------------------------------------"
293         cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy
294         @echo
295         @echo "--------------------------------------------------------------"
296         @echo ">>> Installing everything.."
297         @echo "--------------------------------------------------------------"
298         cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
299 .if !defined(NOMAN)
300         @echo
301         @echo "--------------------------------------------------------------"
302         @echo ">>> Rebuilding man page indices"
303         @echo "--------------------------------------------------------------"
304         cd ${.CURDIR}/share/man; ${MAKE} makedb
305 .endif
306
307 #
308 # update
309 #
310 # Update the source tree, by running sup and/or running cvs to update to the
311 # latest copy.
312 #
313 update:
314 .if defined(SUP_UPDATE)
315         @echo "--------------------------------------------------------------"
316         @echo ">>> Running ${SUP}"
317         @echo "--------------------------------------------------------------"
318 .if defined(SUPFILE)
319         @${SUP} ${SUPFLAGS} ${SUPFILE}
320 .endif
321 .if defined(SUPFILE1)
322         @${SUP} ${SUPFLAGS} ${SUPFILE1}
323 .endif
324 .if defined(SUPFILE2)
325         @${SUP} ${SUPFLAGS} ${SUPFILE2}
326 .endif
327 .if defined(PORTSSUPFILE)
328         @${SUP} ${SUPFLAGS} ${PORTSSUPFILE}
329 .endif
330 .endif
331 .if defined(CVS_UPDATE)
332         @echo "--------------------------------------------------------------"
333         @echo ">>> Updating ${.CURDIR} from cvs repository" ${CVSROOT}
334         @echo "--------------------------------------------------------------"
335         cd ${.CURDIR}; cvs -q update -P -d
336 .endif
337
338 #
339 # most
340 #
341 # Build most of the user binaries on the existing system libs and includes.
342 #
343 most:
344         @echo "--------------------------------------------------------------"
345         @echo ">>> Building programs only"
346         @echo "--------------------------------------------------------------"
347         cd ${.CURDIR}/bin;              ${MAKE} all
348         cd ${.CURDIR}/sbin;             ${MAKE} all
349         cd ${.CURDIR}/libexec;          ${MAKE} all
350         cd ${.CURDIR}/usr.bin;          ${MAKE} all
351         cd ${.CURDIR}/usr.sbin;         ${MAKE} all
352         cd ${.CURDIR}/gnu/libexec;      ${MAKE} all
353         cd ${.CURDIR}/gnu/usr.bin;      ${MAKE} all
354         cd ${.CURDIR}/gnu/usr.sbin;     ${MAKE} all
355
356 #
357 # installmost
358 #
359 # Install the binaries built by the 'most' target.  This does not include
360 # libraries or include files.
361 #
362 installmost:
363         @echo "--------------------------------------------------------------"
364         @echo ">>> Installing programs only"
365         @echo "--------------------------------------------------------------"
366         cd ${.CURDIR}/bin;              ${MAKE} install
367         cd ${.CURDIR}/sbin;             ${MAKE} install
368         cd ${.CURDIR}/libexec;          ${MAKE} install
369         cd ${.CURDIR}/usr.bin;          ${MAKE} install
370         cd ${.CURDIR}/usr.sbin;         ${MAKE} install
371         cd ${.CURDIR}/gnu/libexec;      ${MAKE} install
372         cd ${.CURDIR}/gnu/usr.bin;      ${MAKE} install
373         cd ${.CURDIR}/gnu/usr.sbin;     ${MAKE} install
374
375 #
376 # ------------------------------------------------------------------------
377 #
378 # From here onwards are utility targets used by the 'make world' and
379 # related targets.  If your 'world' breaks, you may like to try to fix
380 # the problem and manually run the following targets to attempt to
381 # complete the build.  Beware, this is *not* guaranteed to work, you
382 # need to have a pretty good grip on the current state of the system
383 # to attempt to manually finish it.  If in doubt, 'make world' again.
384 #
385
386 #
387 # bootstrap-tools: Build tools needed for compatibility
388 #
389 .if exists(${.CURDIR}/games) && !defined(NOGAMES)
390 _strfile=       games/fortune/strfile
391 .endif
392
393 bootstrap-tools:
394 .for _tool in ${_strfile} usr.bin/yacc usr.bin/colldef gnu/usr.bin/bison
395         cd ${.CURDIR}/${_tool}; \
396                 ${MAKE} obj; \
397                 ${MAKE} depend; \
398                 ${MAKE} all; \
399                 ${MAKE} install
400 .endfor
401
402 #
403 # build-tools: Build special purpose build tools
404 #
405 .if exists(${.CURDIR}/games) && !defined(NOGAMES)
406 _games= games/adventure games/hack games/phantasia
407 .endif
408
409 .if exists(${.CURDIR}/share) && !defined(NOSHARE)
410 _share= share/syscons/scrnmaps
411 .endif
412
413 .if !defined(NO_FORTRAN)
414 _fortran= gnu/usr.bin/cc/f771
415 .endif
416
417 .if exists(${.CURDIR}/kerberosIV) && exists(${.CURDIR}/crypto) && \
418     !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
419 _libroken= kerberosIV/lib/libroken
420 .endif
421
422 build-tools:
423 .for _tool in bin/sh ${_games} gnu/usr.bin/cc/cc_tools ${_fortran} \
424     ${_libroken} lib/libncurses ${_share}
425         cd ${.CURDIR}/${_tool}; ${MAKE} build-tools
426 .endfor
427
428 #
429 # cross-tools: Build cross-building tools
430 #
431 # WARNING: Because the bootstrap tools are expected to run on the
432 # build-machine, MACHINE_ARCH is *always* set to BUILD_ARCH when this
433 # target is being made. TARGET_ARCH is *always* set to reflect the
434 # target-machine (which you can set by specifying MACHINE_ARCH on
435 # make's command-line, get it?).
436 # The reason is simple: we build these tools not to be run on the
437 # architecture we're cross-building, but on the architecture we're
438 # currently building on (ie the host-machine) and we expect these
439 # tools to produce output for the architecture we're trying to
440 # cross-build.
441 #
442 .if ${TARGET_ARCH} == "alpha" && ${MACHINE_ARCH} != "alpha"
443 _elf2exe=       usr.sbin/elf2exe
444 .endif
445
446 # XXX - MACHINE should actually be TARGET. But we don't set that...
447 .if ${TARGET_ARCH} == "i386" && ${MACHINE} == "pc98"
448 _aout_tools=    usr.bin/size usr.bin/strip gnu/usr.bin/as gnu/usr.bin/ld
449 .endif
450
451 cross-tools:
452 .for _tool in ${_aout_tools} ${_elf2exe} usr.bin/genassym usr.bin/gensetdefs \
453     gnu/usr.bin/binutils usr.bin/objformat gnu/usr.bin/cc
454         cd ${.CURDIR}/${_tool}; \
455                 ${MAKE} obj; \
456                 ${MAKE} depend; \
457                 ${MAKE} all; \
458                 ${MAKE} install
459 .endfor
460
461 #
462 # hierarchy - ensure that all the needed directories are present
463 #
464 hierarchy:
465         cd ${.CURDIR}/etc;              ${MAKE} distrib-dirs
466
467 #
468 # includes - possibly generate and install the include files.
469 #
470 includes:
471         cd ${.CURDIR}/include;                  ${MAKE} -B all install
472         cd ${.CURDIR}/gnu/include;              ${MAKE} install
473         cd ${.CURDIR}/gnu/lib/libmp;            ${MAKE} beforeinstall
474         cd ${.CURDIR}/gnu/lib/libobjc;          ${MAKE} beforeinstall
475         cd ${.CURDIR}/gnu/lib/libreadline;      ${MAKE} beforeinstall
476         cd ${.CURDIR}/gnu/lib/libregex;         ${MAKE} beforeinstall
477         cd ${.CURDIR}/gnu/lib/libstdc++;        ${MAKE} beforeinstall
478         cd ${.CURDIR}/gnu/lib/libdialog;        ${MAKE} beforeinstall
479         cd ${.CURDIR}/gnu/lib/libgmp;           ${MAKE} beforeinstall
480         cd ${.CURDIR}/gnu/usr.bin/cc/cc1plus;   ${MAKE} beforeinstall
481 .if exists(${.CURDIR}/secure) && !defined(NOCRYPT)
482 .if exists(${.CURDIR}/secure/lib/libcrypto)
483         cd ${.CURDIR}/secure/lib/libcrypto;     ${MAKE} beforeinstall
484 .endif
485         cd ${.CURDIR}/secure/lib/libdes;        ${MAKE} beforeinstall
486 .if exists(${.CURDIR}/secure/lib/libssl)
487         cd ${.CURDIR}/secure/lib/libssl;        ${MAKE} beforeinstall
488 .endif
489 .endif
490 .if exists(${.CURDIR}/kerberosIV) && !defined(NOCRYPT) && \
491     defined(MAKE_KERBEROS4)
492         cd ${.CURDIR}/kerberosIV/lib/libacl;    ${MAKE} beforeinstall
493         cd ${.CURDIR}/kerberosIV/lib/libkadm;   ${MAKE} beforeinstall
494         cd ${.CURDIR}/kerberosIV/lib/libkafs;   ${MAKE} beforeinstall
495         cd ${.CURDIR}/kerberosIV/lib/libkdb;    ${MAKE} beforeinstall
496         cd ${.CURDIR}/kerberosIV/lib/libkrb;    ${MAKE} beforeinstall
497         cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall
498 .else
499         cd ${.CURDIR}/lib/libtelnet;            ${MAKE} beforeinstall
500 .endif
501 .if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH})
502         cd ${.CURDIR}/lib/csu/${MACHINE_ARCH};  ${MAKE} beforeinstall
503 .endif
504         cd ${.CURDIR}/lib/libalias;             ${MAKE} beforeinstall
505         cd ${.CURDIR}/lib/libatm;               ${MAKE} beforeinstall
506         cd ${.CURDIR}/lib/libdevstat;           ${MAKE} beforeinstall
507         cd ${.CURDIR}/lib/libc;                 ${MAKE} beforeinstall
508         cd ${.CURDIR}/lib/libcalendar;          ${MAKE} beforeinstall
509         cd ${.CURDIR}/lib/libcam;               ${MAKE} beforeinstall
510         cd ${.CURDIR}/lib/libdisk;              ${MAKE} beforeinstall
511         cd ${.CURDIR}/lib/libedit;              ${MAKE} beforeinstall
512         cd ${.CURDIR}/lib/libftpio;             ${MAKE} beforeinstall
513         cd ${.CURDIR}/lib/libkvm;               ${MAKE} beforeinstall
514         cd ${.CURDIR}/lib/libmd;                ${MAKE} beforeinstall
515 .if !defined(WANT_CSRG_LIBM)
516         cd ${.CURDIR}/lib/msun;                 ${MAKE} beforeinstall
517 .endif
518         cd ${.CURDIR}/lib/libncp;               ${MAKE} beforeinstall
519         cd ${.CURDIR}/lib/libncurses;           ${MAKE} beforeinstall
520         cd ${.CURDIR}/lib/libnetgraph;          ${MAKE} beforeinstall
521         cd ${.CURDIR}/lib/libopie;              ${MAKE} beforeinstall
522         cd ${.CURDIR}/lib/libpam/libpam;        ${MAKE} beforeinstall
523         cd ${.CURDIR}/lib/libpcap;              ${MAKE} beforeinstall
524         cd ${.CURDIR}/lib/libradius;            ${MAKE} beforeinstall
525         cd ${.CURDIR}/lib/librpcsvc;            ${MAKE} beforeinstall
526         cd ${.CURDIR}/lib/libskey;              ${MAKE} beforeinstall
527         cd ${.CURDIR}/lib/libstand;             ${MAKE} beforeinstall
528         cd ${.CURDIR}/lib/libtacplus;           ${MAKE} beforeinstall
529         cd ${.CURDIR}/lib/libcom_err;           ${MAKE} beforeinstall
530         cd ${.CURDIR}/lib/libss;                ${MAKE} -B hdrs beforeinstall
531         cd ${.CURDIR}/lib/libutil;              ${MAKE} beforeinstall
532         cd ${.CURDIR}/lib/libvgl;               ${MAKE} beforeinstall
533         cd ${.CURDIR}/lib/libwrap;              ${MAKE} beforeinstall
534         cd ${.CURDIR}/lib/libz;                 ${MAKE} beforeinstall
535         cd ${.CURDIR}/usr.bin/lex;              ${MAKE} beforeinstall
536
537 #
538 # libraries - build all libraries, and install them under ${DESTDIR}.
539 #
540 # The following dependencies exist between the libraries:
541 #
542 # lib*: csu
543 # libatm: libmd
544 # libcrypt: libmd
545 # libdialog: libncurses
546 # libedit: libncurses
547 # libg++: libm
548 # libkrb: libcrypt
549 # libopie: libmd
550 # libpam: libcom_err libcrypt libdes libgcc_pic libkrb libradius libskey \
551 #         libtacplus libutil
552 # libradius: libmd
553 # libreadline: libncurses
554 # libskey: libcrypt libmd
555 # libss: libcom_err
556 # libstc++: libm
557 # libtacplus: libmd
558 #
559 # Across directories this comes down to (rougly):
560 #
561 # gnu/lib: lib/libm lib/libncurses
562 # kerberosIV/lib: lib/libcrypt
563 # lib/libpam: secure/lib/libdes kerberosIV/lib/libkrb gnu/lib/libgcc
564 # secure/lib: lib/libmd
565 #
566 .if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}.pcc)
567 _csu=   lib/csu/${MACHINE_ARCH}.pcc
568 .elif ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf"
569 _csu=   lib/csu/i386-elf
570 .else
571 _csu=   lib/csu/${MACHINE_ARCH}
572 .endif
573
574 .if !defined(NOSECURE) && !defined(NOCRYPT)
575 _secure_lib=    secure/lib
576 .endif
577
578 .if !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
579 _kerberosIV_lib=        kerberosIV/lib
580 .endif
581
582 .if defined(WANT_CSRG_LIBM)
583 _libm=  lib/libm
584 .else
585 _libm=  lib/msun
586 .endif
587
588 .if !defined(NOPERL)
589 _libperl=       gnu/usr.bin/perl/libperl
590 .endif
591
592 .if ${MACHINE_ARCH} == "i386"
593 _libkeycap=     usr.sbin/pcvt/keycap
594 .endif
595
596 libraries:
597 .for _lib in ${_csu} lib/libmd lib/libcrypt ${_secure_lib} ${_kerberosIV_lib} \
598     gnu/lib/libgcc lib/libcom_err ${_libm} lib/libncurses lib/libradius \
599     lib/libskey lib/libtacplus lib/libutil lib gnu/lib ${_libperl} \
600     usr.bin/lex/lib ${_libkeycap}
601 .if exists(${.CURDIR}/${_lib})
602         cd ${.CURDIR}/${_lib}; \
603                 ${MAKE} depend; \
604                 ${MAKE} all; \
605                 ${MAKE} install
606 .endif
607 .endfor
608
609 .for __target in clean cleandepend cleandir depend obj
610 .for entry in ${SUBDIR}
611 ${entry}.${__target}__D: .PHONY
612         @if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \
613                 ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH}"; \
614                 edir=${entry}.${MACHINE_ARCH}; \
615                 cd ${.CURDIR}/$${edir}; \
616         else \
617                 ${ECHODIR} "===> ${DIRPRFX}${entry}"; \
618                 edir=${entry}; \
619                 cd ${.CURDIR}/$${edir}; \
620         fi; \
621         ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
622 .endfor
623 par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
624 .endfor
625
626 .include <bsd.subdir.mk>