2 # $Id: Makefile,v 1.154 1997/10/07 11:32:05 bde Exp $
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)
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
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
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
36 .if (!make(world)) && (!make(buildworld)) && (!make(installworld))
37 .MAKEFLAGS:= ${.MAKEFLAGS} -m ${.CURDIR}/share/mk
40 # Put initial settings here.
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)
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.
62 .if exists(games) && !defined(NOGAMES)
68 .if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
77 .if exists(share) && !defined(NOSHARE)
89 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
92 .if exists(lkm) && !defined(NOLKM)
96 # etc must be last for "distribute" to work
97 .if exists(etc) && make(distribute)
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)
111 # Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR
112 .if defined(NOOBJDIR)
121 .if defined(NOCLEANDIR)
132 # While building tools for bootstrapping, we dont need to waste time on
133 # profiled libraries or man pages. This speeds things up somewhat.
135 MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
140 # Attempt to rebuild and reinstall *everything*, with reasonable chance of
141 # success, regardless of how old your existing system is.
143 # >> Beware, it overwrites the local build environment! <<
146 @echo "--------------------------------------------------------------"
147 @echo "make world started on `LC_TIME=C date`"
148 @echo "--------------------------------------------------------------"
149 .if target(pre-world)
151 @echo "--------------------------------------------------------------"
152 @echo " Making 'pre-world' target"
153 @echo "--------------------------------------------------------------"
154 cd ${.CURDIR} && ${MAKE} pre-world
156 cd ${.CURDIR} && ${MAKE} buildworld
157 cd ${.CURDIR} && ${MAKE} -B installworld
158 .if target(post-world)
160 @echo "--------------------------------------------------------------"
161 @echo " Making 'post-world' target"
162 @echo "--------------------------------------------------------------"
163 cd ${.CURDIR} && ${MAKE} post-world
166 @echo "--------------------------------------------------------------"
167 @echo "make world completed on `LC_TIME=C date`"
168 @echo "--------------------------------------------------------------"
170 .if defined(MAKEOBJDIRPREFIX)
171 WORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp
173 WORLDTMP= /usr/obj${.CURDIR}/tmp
175 STRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin
176 TMPPATH= ${STRICTTMPPATH}:${PATH}
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
191 BMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t
192 XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
193 CC='cc -nostdinc' # XXX -nostdlib
195 # used to compile and install 'make' in temporary build tree
196 IBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP}
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}
207 # Attempt to rebuild the entire system, with reasonable chance of
208 # success, regardless of how old your existing system is.
211 .if !defined(NOCLEAN)
213 @echo "--------------------------------------------------------------"
214 @echo " Cleaning up the temporary build tree"
215 @echo "--------------------------------------------------------------"
217 chflags -R noschg ${WORLDTMP}/
221 @echo "--------------------------------------------------------------"
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}
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
235 @echo "--------------------------------------------------------------"
236 @echo " Making hierarchy"
237 @echo "--------------------------------------------------------------"
238 cd ${.CURDIR} && ${BMAKE} hierarchy
239 .if !defined(NOCLEAN)
241 @echo "--------------------------------------------------------------"
242 @echo " Cleaning up the obj tree"
243 @echo "--------------------------------------------------------------"
244 cd ${.CURDIR} && ${BMAKE} par-${CLEANDIR}
246 .if !defined(NOOBJDIR)
248 @echo "--------------------------------------------------------------"
249 @echo " Rebuilding the obj tree"
250 @echo "--------------------------------------------------------------"
251 cd ${.CURDIR} && ${BMAKE} par-obj
254 @echo "--------------------------------------------------------------"
255 @echo " Rebuilding bootstrap tools"
256 @echo "--------------------------------------------------------------"
257 cd ${.CURDIR} && ${BMAKE} bootstrap
259 @echo "--------------------------------------------------------------"
260 @echo " Rebuilding tools necessary to build the include files"
261 @echo "--------------------------------------------------------------"
262 cd ${.CURDIR} && ${BMAKE} include-tools
264 @echo "--------------------------------------------------------------"
265 @echo " Rebuilding /usr/include"
266 @echo "--------------------------------------------------------------"
267 cd ${.CURDIR} && SHARED=symlinks ${BMAKE} includes
269 @echo "--------------------------------------------------------------"
270 @echo " Rebuilding tools needed to build the libraries"
271 @echo "--------------------------------------------------------------"
272 cd ${.CURDIR} && ${BMAKE} lib-tools
274 @echo "--------------------------------------------------------------"
275 @echo " Rebuilding /usr/lib"
276 @echo "--------------------------------------------------------------"
277 cd ${.CURDIR} && ${BMAKE} libraries
279 @echo "--------------------------------------------------------------"
280 @echo " Rebuilding all other tools needed to build the world"
281 @echo "--------------------------------------------------------------"
282 cd ${.CURDIR} && ${BMAKE} build-tools
284 @echo "--------------------------------------------------------------"
285 @echo " Rebuilding dependencies"
286 @echo "--------------------------------------------------------------"
287 cd ${.CURDIR} && ${XMAKE} par-depend
289 @echo "--------------------------------------------------------------"
290 @echo " Building everything.."
291 @echo "--------------------------------------------------------------"
292 cd ${.CURDIR} && ${XMAKE} all
297 # Installs everything compiled by a 'buildworld'.
300 cd ${.CURDIR} && ${IXMAKE} reinstall
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.
310 @echo "--------------------------------------------------------------"
311 @echo " Making hierarchy"
312 @echo "--------------------------------------------------------------"
313 cd ${.CURDIR} && ${MAKE} hierarchy
315 @echo "--------------------------------------------------------------"
316 @echo " Installing everything.."
317 @echo "--------------------------------------------------------------"
318 cd ${.CURDIR} && ${MAKE} install
320 @echo "--------------------------------------------------------------"
321 @echo " Rebuilding man page indexes"
322 @echo "--------------------------------------------------------------"
323 cd ${.CURDIR}/share/man && ${MAKE} makedb
328 # Update the source tree, by running sup and/or running cvs to update to the
332 .if defined(SUP_UPDATE)
333 @echo "--------------------------------------------------------------"
335 @echo "--------------------------------------------------------------"
336 @${SUP} ${SUPFLAGS} ${SUPFILE}
337 .if defined(SUPFILE1)
338 @${SUP} ${SUPFLAGS} ${SUPFILE1}
340 .if defined(SUPFILE2)
341 @${SUP} ${SUPFLAGS} ${SUPFILE2}
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
354 # Build most of the user binaries on the existing system libs and includes.
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
371 #.if !defined(NOSECURE) && !defined(NOCRYPT)
372 # cd ${.CURDIR}/secure && ${MAKE} most
378 # Install the binaries built by the 'most' target. This does not include
379 # libraries or include files.
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
396 #.if !defined(NOSECURE) && !defined(NOCRYPT)
397 # cd ${.CURDIR}/secure && ${MAKE} installmost
401 # ------------------------------------------------------------------------
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.
412 # heirarchy - ensure that all the needed directories are present
415 cd ${.CURDIR}/etc && ${MAKE} distrib-dirs
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.
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
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
443 # include-tools - generally the same as 'bootstrap', except that it's for
444 # things that are specifically needed to generate include files.
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}.
451 cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \
452 ${MAKE} ${MK_FLAGS} all && \
453 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
456 # includes - possibly generate and install the include files.
460 rm -rf ${DESTDIR}/usr/include/*
461 mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
462 -p ${DESTDIR}/usr/include
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
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
485 cd ${.CURDIR}/lib/libtelnet && ${MAKE} beforeinstall
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
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
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
519 # lib-tools - build tools to compile and install the libraries.
521 # XXX gperf is required for cc
522 # XXX a new ld and tsort is required for cc
538 cd ${.CURDIR}/$d && ${MAKE} depend && \
539 ${MAKE} ${MK_FLAGS} all && \
540 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
544 # libraries - build and install the 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}
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}
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}
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}
568 cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \
569 ${MAKE} ${MK_FLAGS} all && \
570 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
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}
578 cd ${.CURDIR}/lib && ${MAKE} depend && \
579 ${MAKE} ${MK_FLAGS} all && \
580 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
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}
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}
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}
599 # build-tools - build and install any other tools needed to complete the
600 # compile and install.
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.
606 # XXX uname is a bug - the target should not depend on the host.
630 gnu/usr.bin/man/makewhatis \
632 gnu/usr.bin/texinfo \
665 cd ${.CURDIR}/$d && ${MAKE} depend && \
666 ${MAKE} ${MK_FLAGS} all && \
667 ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
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}; \
678 ${ECHODIR} "===> ${DIRPRFX}${entry}"; \
680 cd ${.CURDIR}/$${edir}; \
682 ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
684 par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
687 .include <bsd.subdir.mk>