summaryrefslogtreecommitdiff
path: root/Makefile.inc1
diff options
context:
space:
mode:
authorJohn Birrell <jb@FreeBSD.org>1998-08-31 01:08:08 +0000
committerJohn Birrell <jb@FreeBSD.org>1998-08-31 01:08:08 +0000
commit11fb97daa75d7b8711d69a0736a3bdfc149f7f7e (patch)
tree8f4e6834978905bc2d9194db2e15bb7a6de48382 /Makefile.inc1
parent7ceecc66458ab489687d6a19edf9d0d3fd3446e9 (diff)
downloadsrc-test2-11fb97daa75d7b8711d69a0736a3bdfc149f7f7e.tar.gz
src-test2-11fb97daa75d7b8711d69a0736a3bdfc149f7f7e.zip
E-day build system changes.
- Moved most of the guts of Makefile to Makefile.inc1 to become the backend for the build system. - The new Makefile doesn't suffer from problems including the wrong sys.mk because it doesn't use anything in there or bsd.own.mk. So, from now on, the proper build command is just `make world' (or buildworld). - The intermediate makefiles called Makefile.inc0 and Makefile.upgrade fiddle with the OBJFORMAT and MAKEOBJDIRPREFIX variables so that both aout and elf object trees can coexist. Makefile.upgrade contains the aout->elf transition build. - A cross build environment is now very close to reality. Specifying TOOLDIR, setting OBJFORMAT and MAKEOBJDIRPREFIX allow that. See the comments in Makefile for more info.
Notes
Notes: svn path=/head/; revision=38666
Diffstat (limited to 'Makefile.inc1')
-rw-r--r--Makefile.inc1961
1 files changed, 961 insertions, 0 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
new file mode 100644
index 000000000000..2d04a8655805
--- /dev/null
+++ b/Makefile.inc1
@@ -0,0 +1,961 @@
+#
+# $Id: Makefile,v 1.209 1998/08/04 17:13:38 bde Exp $
+#
+# Make command line options:
+# -DCLOBBER will remove /usr/include
+# -DMAKE_KERBEROS4 to build KerberosIV
+# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
+# -DNOCLEAN do not clean at all
+# -DNOTOOLS do not rebuild any tools first
+# -DNOCRYPT will prevent building of crypt versions
+# -DNOLKM do not build loadable kernel modules
+# -DNOPROFILE do not build profiled libraries
+# -DNOSECURE do not go into secure subdir
+# -DNOGAMES do not go into games subdir
+# -DNOSHARE do not go into share subdir
+# -DNOINFO do not make or install info files
+# -DNOLIBC_R do not build libc_r.
+# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
+
+#
+# The intended user-driven targets are:
+# buildworld - rebuild *everything*, including glue to help do upgrades
+# installworld- install everything built by "buildworld"
+# update - convenient way to update your source tree (eg: sup/cvs)
+# most - build user commands, no libraries or include files
+# installmost - install user commands, no libraries or include files
+#
+# Standard targets (not defined here) are documented in the makefiles in
+# /usr/share/mk. These include:
+# obj depend all install clean cleandepend cleanobj
+
+# Put initial settings here.
+SUBDIR=
+
+# We must do share/info early so that installation of info `dir'
+# entries works correctly. Do it first since it is less likely to
+# grow dependencies on include and lib than vice versa.
+.if exists(share/info)
+SUBDIR+= share/info
+.endif
+
+# We must do include and lib early so that the perl *.ph generation
+# works correctly as it uses the header files installed by this.
+.if exists(include)
+SUBDIR+= include
+.endif
+.if exists(lib)
+SUBDIR+= lib
+.endif
+
+.if exists(bin)
+SUBDIR+= bin
+.endif
+.if exists(games) && !defined(NOGAMES)
+SUBDIR+= games
+.endif
+.if exists(gnu)
+SUBDIR+= gnu
+.endif
+.if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && \
+ defined(MAKE_KERBEROS4)
+SUBDIR+= kerberosIV
+.endif
+.if exists(libexec)
+SUBDIR+= libexec
+.endif
+.if exists(sbin)
+SUBDIR+= sbin
+.endif
+.if exists(share) && !defined(NOSHARE)
+SUBDIR+= share
+.endif
+.if exists(sys)
+SUBDIR+= sys
+.endif
+.if exists(usr.bin)
+SUBDIR+= usr.bin
+.endif
+.if exists(usr.sbin)
+SUBDIR+= usr.sbin
+.endif
+.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
+SUBDIR+= secure
+.endif
+.if exists(lkm) && !defined(NOLKM) && ${OBJFORMAT} == "aout"
+SUBDIR+= lkm
+.endif
+
+# etc must be last for "distribute" to work
+.if exists(etc)
+SUBDIR+= etc
+.endif
+
+# These are last, since it is nice to at least get the base system
+# rebuilt before you do them.
+.if defined(LOCAL_DIRS)
+.for _DIR in ${LOCAL_DIRS}
+.if exists(${_DIR}) & exists(${_DIR}/Makefile)
+SUBDIR+= ${_DIR}
+.endif
+.endfor
+.endif
+
+OBJDIR= obj
+
+.if defined(NOCLEAN)
+CLEANDIR=
+.else
+.if defined(NOCLEANDIR)
+CLEANDIR= clean cleandepend
+.else
+CLEANDIR= cleandir
+.endif
+.endif
+
+.if !defined(NOCLEAN)
+_NODEPEND= true
+.endif
+.if defined(_NODEPEND)
+_DEPEND= cleandepend
+.else
+_DEPEND= depend
+.endif
+
+SUP?= cvsup
+SUPFLAGS?= -g -L 2 -P -
+
+#
+# While building tools for bootstrapping, we don't need to waste time on
+# shared or profiled libraries, shared linkage, or documentation, except
+# when the tools won't get cleaned we must use the defaults for shared
+# libraries and shared linkage (and this doesn't waste time).
+# XXX actually, we do need to waste time building shared libraries.
+#
+.if defined(NOCLEAN)
+MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
+.else
+MK_FLAGS= -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED
+.endif
+
+#
+# Define the location of the temporary installation directory. Note that
+# MAKEOBJDIRPREFIX normally isn't defined so if the current directory is
+# /usr/src, then the world temporary directory is /usr/obj/usr/src/tmp.
+#
+# During the transition from aout to elf format on i386, MAKEOBJDIRPREFIX
+# is set by the parent makefile (Makefile.inc0) to be /usr/obj/${OBJFORMAT}
+# in order to keep aout and elf format files apart.
+#
+.if defined(MAKEOBJDIRPREFIX)
+WORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp
+.else
+WORLDTMP= /usr/obj${.CURDIR}/tmp
+.endif
+
+#
+# Define the PATH to the build tools.
+#
+# If not building tools, the PATH always points to the installed binaries.
+# The NOTOOLS option assumes that in installed tools are good enough and that
+# the user's PATH will locate to appropriate tools. This option is required
+# for a cross-compiled build environment.
+#
+# If building tools, then the PATH includes the world temporary directories
+# so that the bootstrapped tools are used as soon as they are built. The
+# strict path is for use after all tools are supposed to have been
+# bootstrapped. It doesn't allow any of the installed tools to be used.
+#
+.if defined(NOTOOLS)
+# Default root of the tool tree
+TOOLROOT?=
+# Choose the PATH relative to the root of the tool tree
+PATH= ${TOOLROOT}/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/sbin:${TOOLROOT}/usr/bin:${TOOLROOT}/usr/games
+.else
+TOOLROOT= ${WORLDTMP}
+.endif
+STRICTTMPPATH= ${TOOLROOT}/sbin:${TOOLROOT}/usr/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/bin
+TMPPATH= ${STRICTTMPPATH}:${PATH}
+
+# XXX COMPILER_PATH is needed for finding cc1, ld and as
+# XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecessary now
+# that LIBRARY_PATH is set. We still can't use -nostdlib, since gcc
+# wouldn't link *crt.o or libgcc if it were used.
+# XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't
+# want that - all compile-time library paths should be resolved by gcc.
+# It fails for set[ug]id executables (are any used?).
+COMPILER_ENV= BISON_SIMPLE=${TOOLROOT}/usr/share/misc/bison.simple \
+ COMPILER_PATH=${TOOLROOT}/usr/libexec:${TOOLROOT}/usr/bin \
+ GCC_EXEC_PREFIX=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib/ \
+ LD_LIBRARY_PATH=${TOOLROOT}${SHLIBDIR} \
+ LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib
+
+BMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t \
+ OBJFORMAT_PATH=${TOOLROOT}/usr/libexec:/usr/libexec
+XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
+ OBJFORMAT_PATH=${TOOLROOT}/usr/libexec \
+ CFLAGS="-nostdinc ${CFLAGS}" # XXX -nostdlib
+
+# used to compile and install 'make' in temporary build tree
+MAKETMP= ${WORLDTMP}/make
+IBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP}
+
+.if defined(NOTOOLS)
+# bootstrap make
+BMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP}
+# cross make used for compilation
+XMAKE= ${XMAKEENV} ${MAKE} DESTDIR=${WORLDTMP}
+# cross make used for final installation
+IXMAKE= ${XMAKEENV} ${MAKE}
+.else
+# bootstrap make
+BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
+# cross make used for compilation
+XMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP}
+# cross make used for final installation
+IXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make
+.endif
+
+#
+# buildworld
+#
+# Attempt to rebuild the entire system, with reasonable chance of
+# success, regardless of how old your existing system is.
+#
+buildworld:
+.if !defined(NOCLEAN)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Cleaning up the temporary ${OBJFORMAT} build tree"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${WORLDTMP}
+ chflags -R noschg ${WORLDTMP}/
+ rm -rf ${WORLDTMP}
+.endif
+.if !defined(NOTOOLS)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Making make"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${WORLDTMP}/usr/bin ${MAKETMP}
+ ( \
+ cd ${.CURDIR}/usr.bin/make; \
+ MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \
+ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all; \
+ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install; \
+ ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean \
+ )
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Making mtree"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${WORLDTMP}/usr/sbin ${WORLDTMP}/mtree
+ ( \
+ cd ${.CURDIR}/usr.sbin/mtree; \
+ MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \
+ export MAKEOBJDIR=${WORLDTMP}/mtree; \
+ ${BMAKE} ${MK_FLAGS} all; \
+ ${BMAKE} ${MK_FLAGS} -B install clean \
+ )
+.endif
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Making hierarchy"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${WORLDTMP}
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 hierarchy
+.if !defined(NOCLEAN)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Cleaning up the ${OBJFORMAT} obj tree"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/}
+.endif
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding the ${OBJFORMAT} obj tree"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 par-${OBJDIR}
+.if !defined(NOTOOLS)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding ${OBJFORMAT} bootstrap tools"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding tools necessary to build the include files"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 include-tools
+.endif
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding ${DESTDIR}/usr/include"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; SHARED=copies ${BMAKE} -f Makefile.inc1 includes
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding bootstrap libraries"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap-libraries
+.if !defined(NOTOOLS)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding tools needed to build libraries"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 lib-tools
+.endif
+.if !defined(NOTOOLS)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding all other tools needed to build the ${OBJFORMAT} world"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 build-tools
+.endif
+.if !defined(_NODEPEND)
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding dependencies"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-depend
+.endif
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building ${OBJFORMAT} libraries"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building everything.."
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all
+
+everything:
+ @echo "--------------------------------------------------------------"
+ @echo " Building everything.."
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all
+
+#
+# installworld
+#
+# Installs everything compiled by a 'buildworld'.
+#
+installworld:
+ cd ${.CURDIR}; ${IXMAKE} -f Makefile.inc1 reinstall
+
+#
+# reinstall
+#
+# If you have a build server, you can NFS mount the source and obj directories
+# and do a 'make reinstall' on the *client* to install new binaries from the
+# most recent server build.
+#
+reinstall:
+ @echo "--------------------------------------------------------------"
+ @echo " Making hierarchy"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Installing everything.."
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
+.if ${MACHINE_ARCH} == "i386"
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Re-scanning the shared libraries.."
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; /sbin/ldconfig -R
+.endif
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding man page indexes"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/share/man; ${MAKE} makedb
+
+#
+# update
+#
+# Update the source tree, by running sup and/or running cvs to update to the
+# latest copy.
+#
+update:
+.if defined(SUP_UPDATE)
+ @echo "--------------------------------------------------------------"
+ @echo "Running ${SUP}"
+ @echo "--------------------------------------------------------------"
+ @${SUP} ${SUPFLAGS} ${SUPFILE}
+.if defined(SUPFILE1)
+ @${SUP} ${SUPFLAGS} ${SUPFILE1}
+.endif
+.if defined(SUPFILE2)
+ @${SUP} ${SUPFLAGS} ${SUPFILE2}
+.endif
+.endif
+.if defined(CVS_UPDATE)
+ @echo "--------------------------------------------------------------"
+ @echo "Updating /usr/src from cvs repository" ${CVSROOT}
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; cvs -q update -P -d
+.endif
+
+#
+# most
+#
+# Build most of the user binaries on the existing system libs and includes.
+#
+most:
+ @echo "--------------------------------------------------------------"
+ @echo " Building programs only"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/bin; ${MAKE} all
+ cd ${.CURDIR}/sbin; ${MAKE} all
+ cd ${.CURDIR}/libexec; ${MAKE} all
+ cd ${.CURDIR}/usr.bin; ${MAKE} all
+ cd ${.CURDIR}/usr.sbin; ${MAKE} all
+ cd ${.CURDIR}/gnu/libexec; ${MAKE} all
+ cd ${.CURDIR}/gnu/usr.bin; ${MAKE} all
+ cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} all
+#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
+# cd ${.CURDIR}/kerberosIV; ${MAKE} most
+#.endif
+#.if !defined(NOSECURE) && !defined(NOCRYPT)
+# cd ${.CURDIR}/secure; ${MAKE} most
+#.endif
+
+#
+# installmost
+#
+# Install the binaries built by the 'most' target. This does not include
+# libraries or include files.
+#
+installmost:
+ @echo "--------------------------------------------------------------"
+ @echo " Installing programs only"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/bin; ${MAKE} install
+ cd ${.CURDIR}/sbin; ${MAKE} install
+ cd ${.CURDIR}/libexec; ${MAKE} install
+ cd ${.CURDIR}/usr.bin; ${MAKE} install
+ cd ${.CURDIR}/usr.sbin; ${MAKE} install
+ cd ${.CURDIR}/gnu/libexec; ${MAKE} install
+ cd ${.CURDIR}/gnu/usr.bin; ${MAKE} install
+ cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} install
+#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT)
+# cd ${.CURDIR}/kerberosIV; ${MAKE} installmost
+#.endif
+#.if !defined(NOSECURE) && !defined(NOCRYPT)
+# cd ${.CURDIR}/secure; ${MAKE} installmost
+#.endif
+
+#
+# ------------------------------------------------------------------------
+#
+# From here onwards are utility targets used by the 'make world' and
+# related targets. If your 'world' breaks, you may like to try to fix
+# the problem and manually run the following targets to attempt to
+# complete the build. Beware, this is *not* guaranteed to work, you
+# need to have a pretty good grip on the current state of the system
+# to attempt to manually finish it. If in doubt, 'make world' again.
+#
+
+#
+# hierarchy - ensure that all the needed directories are present
+#
+hierarchy:
+ cd ${.CURDIR}/etc; ${MAKE} distrib-dirs
+
+#
+# bootstrap - [re]build tools needed to run the actual build, this includes
+# tools needed by 'make depend', as some tools are needed to generate source
+# for the dependency information to be gathered from.
+#
+bootstrap:
+.if defined(DESTDIR)
+ rm -f ${DESTDIR}/usr/src/sys
+ ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src
+ cd ${.CURDIR}/include; find -dx . | cpio -dump ${DESTDIR}/usr/include
+.for d in net netinet posix4 sys vm machine
+ if [ -h ${DESTDIR}/usr/include/$d ]; then \
+ rm -f ${DESTDIR}/usr/include/$d ; \
+ fi
+.endfor
+ cd ${.CURDIR}/sys; \
+ find -dx net netinet posix4 sys vm -name '*.h' -o -type d | \
+ cpio -dump ${DESTDIR}/usr/include
+ mkdir -p ${DESTDIR}/usr/include/machine
+ cd ${.CURDIR}/sys/${MACHINE_ARCH}/include; find -dx . -name '*.h' -o -type d | \
+ cpio -dump ${DESTDIR}/usr/include/machine
+.endif
+ cd ${.CURDIR}/usr.bin/make; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+ cd ${.CURDIR}/usr.bin/xinstall; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+ cd ${.CURDIR}/usr.bin/yacc; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+ cd ${.CURDIR}/usr.bin/lex; ${MAKE} bootstrap; \
+ ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} -DNOLIB all; \
+ ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR}
+ cd ${.CURDIR}/usr.bin/lex; ${MAKE} ${OBJDIR}
+ cd ${.CURDIR}/usr.sbin/mtree; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+.if defined(DESTDIR)
+ cd ${.CURDIR}/include && ${MAKE} copies
+.endif
+
+#
+# include-tools - generally the same as 'bootstrap', except that it's for
+# things that are specifically needed to generate include files.
+#
+# XXX should be merged with bootstrap, it's not worth keeeping them separate.
+# Well, maybe it is now. We force 'cleandepend' here to avoid dependencies
+# on cleaned away headers in ${WORLDTMP}.
+#
+include-tools:
+.for d in usr.bin/compile_et usr.bin/rpcgen
+ cd ${.CURDIR}/$d; ${MAKE} cleandepend; \
+ ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+.endfor
+
+#
+# includes - possibly generate and install the include files.
+#
+includes:
+.if defined(CLOBBER)
+ rm -rf ${DESTDIR}/usr/include/*
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
+ -p ${DESTDIR}/usr/include
+.endif
+ cd ${.CURDIR}/include; ${MAKE} -B all install
+ cd ${.CURDIR}/gnu/include; ${MAKE} install
+ cd ${.CURDIR}/gnu/lib/libmp; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libobjc; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libreadline; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libregex; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libstdc++; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libg++; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libdialog; ${MAKE} beforeinstall
+ cd ${.CURDIR}/gnu/lib/libgmp; ${MAKE} beforeinstall
+.if exists(secure) && !defined(NOCRYPT)
+ cd ${.CURDIR}/secure/lib/libdes; ${MAKE} beforeinstall
+.endif
+.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
+ cd ${.CURDIR}/kerberosIV/lib/libacl; ${MAKE} beforeinstall
+ cd ${.CURDIR}/kerberosIV/lib/libkadm; ${MAKE} beforeinstall
+ cd ${.CURDIR}/kerberosIV/lib/libkafs; ${MAKE} beforeinstall
+ cd ${.CURDIR}/kerberosIV/lib/libkdb; ${MAKE} beforeinstall
+ cd ${.CURDIR}/kerberosIV/lib/libkrb; ${MAKE} beforeinstall
+ cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall
+.else
+ cd ${.CURDIR}/lib/libtelnet; ${MAKE} beforeinstall
+.endif
+.if exists(${.CURDIR}/lib/csu/${MACHINE})
+ cd ${.CURDIR}/lib/csu/${MACHINE}; ${MAKE} beforeinstall
+.endif
+ cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libc; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libcalendar; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libcurses; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libdisk; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libedit; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libftpio; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libmd; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libmytinfo; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libncurses; ${MAKE} beforeinstall
+.if !defined(WANT_CSRG_LIBM)
+ cd ${.CURDIR}/lib/msun; ${MAKE} beforeinstall
+.endif
+ cd ${.CURDIR}/lib/libopie; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libpcap; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/librpcsvc; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libskey; ${MAKE} beforeinstall
+.if !defined(NOTCL) && exists (${.CURDIR}/contrib/tcl) && \
+ exists(${.CURDIR}/usr.bin/tclsh) && exists (${.CURDIR}/lib/libtcl)
+ cd ${.CURDIR}/lib/libtcl; ${MAKE} installhdrs
+.endif
+ cd ${.CURDIR}/lib/libtermcap; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libcom_err; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libss; ${MAKE} -B hdrs beforeinstall
+ cd ${.CURDIR}/lib/libscsi; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libutil; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libvgl; ${MAKE} beforeinstall
+ cd ${.CURDIR}/lib/libz; ${MAKE} beforeinstall
+ cd ${.CURDIR}/usr.bin/f2c; ${MAKE} beforeinstall
+ cd ${.CURDIR}/usr.bin/lex; ${MAKE} beforeinstall
+
+#
+# Declare tools if they are not required on all architectures.
+#
+.if ${MACHINE_ARCH} == "i386"
+# aout tools:
+_aout_ar = usr.bin/ar
+_aout_as = gnu/usr.bin/as
+_aout_ld = gnu/usr.bin/ld
+_aout_nm = usr.bin/nm
+_aout_ranlib = usr.bin/ranlib
+_aout_size = usr.bin/size
+_aout_strip = usr.bin/strip
+.endif
+
+#
+# lib-tools - build tools to compile and install the libraries.
+#
+# XXX gperf is required for cc
+# XXX a new ld and tsort is required for cc
+lib-tools:
+.for d in \
+ gnu/usr.bin/gperf \
+ ${_aout_ld} \
+ usr.bin/tsort \
+ ${_aout_as} \
+ gnu/usr.bin/bison \
+ gnu/usr.bin/cc \
+ ${_aout_ar} \
+ usr.bin/env \
+ usr.bin/lex/lib \
+ usr.bin/mk_cmds \
+ ${_aout_nm} \
+ ${_aout_ranlib} \
+ ${_aout_strip} \
+ gnu/usr.bin/binutils \
+ usr.bin/uudecode \
+ share/info \
+ usr.bin/objformat
+ cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install; \
+ ${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR}
+.endfor
+
+#
+# We have to know too much about ordering and subdirs in the lib trees:
+#
+# To satisfy shared library linkage when only the libraries being built
+# are visible:
+#
+# libcom_err must be built before libss.
+# libcrypt and libmd must be built before libskey.
+# libm must be built before libtcl.
+# libmytinfo must be built before libdialog and libncurses.
+# libncurses must be built before libdialog.
+# libtermcap must be built before libcurses, libedit and libreadline.
+#
+# Some libraries are built conditionally and/or are in inconsistently
+# named directories:
+#
+.if exists(lib/csu/${MACHINE}.pcc)
+_csu=lib/csu/${MACHINE}.pcc
+.elif ${MACHINE} == "i386" && ${OBJFORMAT} == "elf"
+_csu=lib/csu/i386-elf
+.else
+_csu=lib/csu/${MACHINE}
+.endif
+
+.if !defined(NOSECURE) && !defined(NOCRYPT)
+_libcrypt= secure/lib/libcrypt lib/libcrypt
+.else
+_libcrypt= lib/libcrypt
+.endif
+
+.if defined(WANT_CSRG_LIBM)
+_libm= lib/libm
+.else
+_libm= lib/msun
+.endif
+
+#
+# bootstrap-libraries - build just enough libraries for the bootstrap
+# tools, and install them under ${WORLDTMP}.
+#
+# Build csu and libgcc early so that some tools get linked to the new
+# versions (too late for the main tools, however). Then build the
+# necessary prerequisite libraries (libtermcap just needs to be before
+# libcurses, and this only matters for the NOCLEAN case when NOPIC is
+# not set).
+#
+# This is mostly wrong. The build tools must run on the host system,
+# so they should use host libraries. We depend on the target being
+# similar enough to the host for new target libraries to work on the
+# host.
+#
+bootstrap-libraries:
+.for _lib in ${_csu} gnu/usr.bin/cc/libgcc lib/libtermcap \
+ gnu/lib/libregex gnu/lib/libreadline lib/libc \
+ ${_libcrypt} lib/libcurses lib/libedit ${_libm} \
+ lib/libmd lib/libutil lib/libz usr.bin/lex/lib
+.if exists(${.CURDIR}/${_lib})
+ cd ${.CURDIR}/${_lib}; \
+ ${MAKE} ${MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${MK_FLAGS} all; \
+ ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+.endif
+.endfor
+
+#
+# bootstrap-rtld - Build the shared library loader and install it
+# under ${WORLDTMP}. This requires libc_pic which isn't normally
+# bootstrapped, so libc has to be built again. *sigh*
+#
+RTLD_MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
+bootstrap-rtld:
+.if exists(${.CURDIR}/libexec/rtld-${OBJFORMAT})
+ cd ${.CURDIR}/lib/libc; \
+ ${MAKE} ${RTLD_MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${RTLD_MK_FLAGS} all; \
+ ${MAKE} ${RTLD_MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+ cd ${.CURDIR}/libexec/rtld-${OBJFORMAT}; \
+ ${MAKE} obj; \
+ ${MAKE} ${RTLD_MK_FLAGS} ${_DEPEND}; \
+ ${MAKE} ${RTLD_MK_FLAGS} all; \
+ ${MAKE} ${RTLD_MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+.endif
+
+#
+# libraries - build all libraries, and install them under ${DESTDIR}.
+#
+# The ordering is not as special as for bootstrap-libraries. Build
+# the prerequisites first, then build almost everything else in
+# alphabetical order.
+#
+libraries:
+.for _lib in lib/libcom_err ${_libcrypt} ${_libm} lib/libmytinfo \
+ lib/libncurses lib/libtermcap \
+ gnu/lib gnu/usr.bin/cc/libgcc lib usr.bin/lex/lib usr.sbin/pcvt/keycap
+.if exists(${.CURDIR}/${_lib})
+ cd ${.CURDIR}/${_lib}; ${MAKE} all; ${MAKE} -B install
+.endif
+.endfor
+.if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE)
+ cd ${.CURDIR}/secure/lib; ${MAKE} all; ${MAKE} -B install
+.endif
+.if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \
+ defined(MAKE_KERBEROS4)
+ cd ${.CURDIR}/kerberosIV/lib; ${MAKE} all; ${MAKE} -B install
+.endif
+
+#
+# Exclude unused tools from build-tools.
+#
+.if !defined(NOGAMES) && exists(${.CURDIR}/games)
+_adventure= games/adventure
+_caesar= games/caesar
+_hack= games/hack
+_phantasia= games/phantasia
+_strfile= games/fortune/strfile
+.endif
+.if !defined(NOPERL)
+_perl= gnu/usr.bin/perl/perl
+.endif
+.if !defined(NOSHARE) && exists(${.CURDIR}/share)
+_scrnmaps= share/syscons/scrnmaps
+.endif
+.if !defined(NOLKM) && exists(${.CURDIR}/lkm) && ${OBJFORMAT} == "aout"
+_linux= lkm/linux
+.endif
+.if ${OBJFORMAT} == "aout"
+_netboot= sys/i386/boot/netboot
+.endif
+
+BTMAKEFLAGS= ${MK_FLAGS} -D_BUILD_TOOLS
+
+#
+# build-tools - build and install any other tools needed to complete the
+# compile and install.
+# ifdef stale
+# bc and cpp are required to build groff. Otherwise, the order here is
+# mostly historical, i.e., bogus.
+# chmod is used to build gcc's tmpmultilib[2] at obscure times.
+# endif stale
+# XXX uname is a bug - the target should not depend on the host.
+#
+build-tools:
+.for d in \
+ bin/cat \
+ bin/chmod \
+ bin/cp \
+ bin/date \
+ bin/dd \
+ bin/echo \
+ bin/expr \
+ bin/hostname \
+ bin/ln \
+ bin/ls \
+ bin/mkdir \
+ bin/mv \
+ bin/rm \
+ bin/test \
+ ${_caesar} \
+ ${_strfile} \
+ gnu/usr.bin/awk \
+ gnu/usr.bin/bc \
+ gnu/usr.bin/grep \
+ gnu/usr.bin/groff \
+ gnu/usr.bin/gzip \
+ gnu/usr.bin/man/makewhatis \
+ gnu/usr.bin/patch \
+ ${_perl} \
+ gnu/usr.bin/sort \
+ gnu/usr.bin/texinfo \
+ usr.bin/basename \
+ usr.bin/cap_mkdb \
+ usr.bin/chflags \
+ usr.bin/cmp \
+ usr.bin/col \
+ usr.bin/colldef \
+ usr.bin/cpp \
+ usr.bin/expand \
+ usr.bin/file2c \
+ usr.bin/find \
+ usr.bin/gencat \
+ usr.bin/id \
+ usr.bin/join \
+ usr.bin/lorder \
+ usr.bin/m4 \
+ usr.bin/mkdep \
+ usr.bin/mklocale \
+ usr.bin/paste \
+ usr.bin/sed \
+ ${_aout_size} \
+ usr.bin/soelim \
+ usr.bin/symorder \
+ usr.bin/touch \
+ usr.bin/tr \
+ usr.bin/true \
+ usr.bin/uname \
+ usr.bin/uuencode \
+ usr.bin/vgrind \
+ usr.bin/vi \
+ usr.bin/wc \
+ usr.bin/xargs \
+ usr.bin/yacc \
+ usr.sbin/chown \
+ usr.sbin/mtree \
+ usr.sbin/zic \
+ bin/sh
+ cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} ${_DEPEND}; \
+ ${MAKE} ${BTMAKEFLAGS} all; \
+ ${MAKE} ${BTMAKEFLAGS} -B install ${CLEANDIR} ${OBJDIR}
+.endfor
+.if !defined(NOGAMES) && exists(${.CURDIR}/games)
+ cd ${DESTDIR}/usr/games; cp -p caesar strfile ${DESTDIR}/usr/bin
+.endif
+.for d in \
+ bin/sh \
+ ${_adventure} \
+ ${_hack} \
+ ${_phantasia} \
+ gnu/usr.bin/cc/cc_tools \
+ lib/libmytinfo \
+ ${_linux} \
+ ${_scrnmaps} \
+ ${_netboot}
+ cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} build-tools
+.endfor
+ cd ${.CURDIR}/usr.bin/tn3270/tools; ${MAKE} ${BTMAKEFLAGS} all
+
+#
+# Build aout versions of things that provide legacy support when all the
+# rest of the world is elf.
+#
+legacy-build:
+.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout"
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Making hierarchy"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${WORLDTMP}
+ cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 hierarchy
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding the ${OBJFORMAT} obj tree"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-${OBJDIR}
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Rebuilding ${DESTDIR}/usr/include"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; SHARED=copies ${XMAKE} -f Makefile.inc1 includes
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building legacy libraries"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}; \
+ ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 bootstrap-libraries
+ cd ${.CURDIR}; \
+ ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building legacy rtld"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/libexec/rtld-aout; \
+ ${XMAKE} -DNOMAN depend; ${XMAKE} -DNOMAN all;
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building legacy lkms"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/lkm; \
+ ${XMAKE} -DNOMAN depend; ${XMAKE} -DNOMAN all;
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Building legacy boot"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/sys/i386/boot; \
+ ${XMAKE} -DNOMAN depend; ${XMAKE} -DNOMAN all;
+.endif
+
+#
+# Install aout versions of things that provide legacy support when all the
+# rest of the world is elf.
+#
+legacy-install:
+.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout"
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Installing legacy libraries"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/lib; ${MAKE} -B install
+ cd ${.CURDIR}/gnu/lib; ${MAKE} -B install
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Installing legacy rtld"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/libexec/rtld-aout; ${MAKE} -DNOMAN install
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Installing legacy lkms"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/lkm; ${MAKE} -DNOMAN install
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo " Installing legacy boot"
+ @echo "--------------------------------------------------------------"
+ cd ${.CURDIR}/sys/i386/boot; ${MAKE} -DNOMAN install
+.endif
+
+
+.for __target in clean cleandepend cleandir depend obj
+.for entry in ${SUBDIR}
+${entry}.${__target}__D: .PHONY
+ @if test -d ${.CURDIR}/${entry}.${MACHINE}; then \
+ ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \
+ edir=${entry}.${MACHINE}; \
+ cd ${.CURDIR}/$${edir}; \
+ else \
+ ${ECHODIR} "===> ${DIRPRFX}${entry}"; \
+ edir=${entry}; \
+ cd ${.CURDIR}/$${edir}; \
+ fi; \
+ ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
+.endfor
+par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
+.endfor
+
+.include <bsd.subdir.mk>