freebsd-nq/Makefile.alpha
John Birrell 592ec7c1e4 Once the new gcc is built, the shared library loader is configured as
the FreeBSD one which isn't built during the bootstrap. This causes all
programs that normally use shared libraries to fail to exec with
"ELF: not found". Sub-optimal. So force the boot strapped programs
to be linked statically.

To install the FreeBSD header files requires both the include tools and the
lib tools. And the libraries require the FreeBSD headers, so the first
build of the tools compiles FreeBSD source against NetBSD headers and
libraries. These tools are then used to install the headers and build
the FreeBSD libraries. After doing that, go back and rebuild the tools
_again_ so that they are fully FreeBSD (src, headers, libs). And only
then go on to build the rest of the FreeBSD system with _only_ FreeBSD
tools.
1998-03-12 03:20:48 +00:00

536 lines
20 KiB
Makefile

# $Id: Makefile.alpha,v 1.5 1998/03/11 21:00:49 jb Exp $
#
# NOTE:
#
# This is a makefile for use while porting FreeBSD to the Alpha
# architecture. It is based on src/Makefile and is included by
# it rather than filling it with a lot of temporary crud.
#
# To use this Makefile on a NetBSD/Alpha 1.3 system, load the
# entire FreeBSD source tree, or mount /usr/src via NFS. From
# /usr/src type:
#
# make -m /usr/src/share/mk buildworld
#
# and you're away. The bootstrap is pretty much complete now, with
# all tools (except the lorder script) being built from FreeBSD
# source. If you have lots of disk space (like 1G) for the obj
# tree, then define IHAVELOTSOFDISKSPACE in your environment before
# running this script. Without this, the bootstrap will complete
# with all the tools, libraries and headers in the /usr/obj/usr/src/tmp
# tree. Then you can build the rest bit by bit by setting the DIRS
# environment variable to the list of directories you want to build,
# then running 'make dirs". So, to make /usr/src/usr.bin,
# export DIRS=usr.bin; cd /usr/src; make dirs
# The programs will build and install in the /usr/obj/usr/src/tmp
# tree. You should run them from there to see if they work. And just
# because they compile, don't assume they work. 8-)
#
# Warning: This build is not supposed to clobber anything on the
# ======= system you are building on, but you should consider what
# ======= you would do if that happened.
#
SUBDIR = share/info lib bin gnu libexec sbin share sys usr.bin \
usr.sbin
.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
SUBDIR+= secure
.endif
OBJDIR = obj
CLEANDIR= cleandir
.MAKEFLAGS:= ${.MAKEFLAGS} -m ${.CURDIR}/share/mk
#
# While building tools for bootstrapping, we dont need to waste time on
# profiled libraries or man pages. This speeds things up somewhat.
#
MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
.if defined(MAKEOBJDIRPREFIX)
WORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp
.else
WORLDTMP= /usr/obj${.CURDIR}/tmp
.endif
STRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/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 unnecssary now
# tbat 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=${WORLDTMP}/usr/share/misc/bison.simple \
COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \
GCC_EXEC_PREFIX=${WORLDTMP}/usr/lib/ \
LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \
LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib
BMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t \
LDFLAGS=-static
LMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} CC='cc -nostdinc' \
LDFLAGS=-static \
MKDEP_CPP='${WORLDTMP}/usr/bin/cc -E -nostdinc'
XMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \
CC='cc -nostdinc' MKDEP_CPP='${WORLDTMP}/usr/bin/cc -nostdinc -E'
# used to compile and install 'make' in temporary build tree
IBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP}
# bootstrap make
BMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP}
# library make
LMAKE= ${LMAKEENV} ${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}
#
# buildworld
#
# Attempt to rebuild the entire system, with reasonable chance of
# success, regardless of how old your existing system is.
#
buildworld:
@echo " Warning: This build is not supposed to clobber anything on the"
@echo " ======= system you are building on, but you should consider what"
@echo " ======= you would do if that happened."
@echo
@echo " ABORT NOW IF UNSURE!"
@sleep 10
@echo " OK, here we go......"
mkdir -p ${WORLDTMP}
@echo "--------------------------------------------------------------"
@echo " Cleaning up the temporary build tree"
@echo "--------------------------------------------------------------"
chflags -R noschg ${WORLDTMP}/
rm -rf ${WORLDTMP}
@echo
@echo "--------------------------------------------------------------"
@echo " Install the FreeBSD mkdep ('cause the NetBSD one isn't good enough!)"
@echo "--------------------------------------------------------------"
mkdir -p ${WORLDTMP}/usr/bin
@cd ${.CURDIR}/usr.bin/mkdep && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install
@echo
@echo
@echo "--------------------------------------------------------------"
@echo " Making a FreeBSD make using the NetBSD one"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR}/usr.bin/make && \
${IBMAKE} -I${.CURDIR}/share/mk ${CLEANDIR} ${OBJDIR}
@cd ${.CURDIR}/usr.bin/make && \
${IBMAKE} -I${.CURDIR}/share/mk depend && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} ${CLEANDIR} ${OBJDIR}
@echo
@echo "--------------------------------------------------------------"
@echo " Making a FreeBSD find which knows the -L argument"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR}/usr.bin/find && \
${IBMAKE} -I${.CURDIR}/share/mk ${CLEANDIR} ${OBJDIR}
@cd ${.CURDIR}/usr.bin/find && \
${IBMAKE} -I${.CURDIR}/share/mk depend && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install && \
${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} ${CLEANDIR} ${OBJDIR}
@echo
@echo "--------------------------------------------------------------"
@echo " Making hierarchy like normal"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${BMAKE} hierarchy
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding the obj tree like normal"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${BMAKE} par-obj
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding FreeBSD bootstrap tools using the NetBSD ones"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${BMAKE} bootstrap
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding FreeBSD tools necessary to build the include files"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${BMAKE} include-tools
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding FreeBSD tools needed to build the libraries"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${BMAKE} lib-tools
@echo
@echo "--------------------------------------------------------------"
@echo " AT THIS POINT, THE TEMPORARY TREE IS SUPPOSED TO HAVE ALL"
@echo " THE TOOLS TO BUILD THE ENTIRE FreeBSD TREE USING FreeBSD"
@echo " HEADER FILES"
@echo
@echo " Rebuilding /usr/include"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && SHARED=copies ${BMAKE} includes
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding /usr/lib"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${LMAKE} libraries
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding all other tools needed to build the world"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${LMAKE} build-tools
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding all tools with the new FreeBSD tools to see"
@echo " if they work..."
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${LMAKE} build-tools
.if IHAVELOTSOFDISKSPACE
@echo
@echo "--------------------------------------------------------------"
@echo " Rebuilding dependencies"
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${XMAKE} par-depend
@echo
@echo "--------------------------------------------------------------"
@echo " Building everything.."
@echo "--------------------------------------------------------------"
@cd ${.CURDIR} && ${XMAKE} all && ${XMAKE} install
.else
@echo "Now build specific directories: export DIRS=foo; make dirs"
.endif
dirs:
@echo DIRS = ${DIRS}
.for d in ${DIRS}
cd ${.CURDIR}/$d && ${XMAKE} obj && \
${XMAKE} depend && \
${XMAKE} all && \
${XMAKE} install ${CLEANDIR} ${OBJDIR}
.endfor
#
# ------------------------------------------------------------------------
#
# 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.
#
#
# heirarchy - 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:
cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} ${OBJDIR} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
cd ${.CURDIR}/usr.bin/lex && ${MAKE} ${OBJDIR} bootstrap && \
${MAKE} depend && \
${MAKE} ${MK_FLAGS} -DNOLIB all && \
${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR}
cd ${.CURDIR}/usr.bin/lex && ${MAKE} obj
#
# 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:
cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
#
# includes - possibly generate and install the include files.
#
includes:
cd ${.CURDIR}/include && ${MAKE} obj && \
${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) && !defined(NOSECURE)
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
cd ${.CURDIR}/lib/csu/${MACHINE_ARCH} && ${MAKE} beforeinstall
cd ${.CURDIR}/lib/libalias && ${MAKE} beforeinstall
cd ${.CURDIR}/lib/libc && ${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} 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
#
# lib-tools - build tools to compile and install the libraries.
#
lib-tools:
@echo "--------------------------------------------------------------"
@echo " Link to things we haven't fixed yet..."
@echo "--------------------------------------------------------------"
@-rm -f ${WORLDTMP}/usr/bin/lorder
@-rm -f ${WORLDTMP}/usr/bin/groff
@-rm -f ${WORLDTMP}/usr/bin/troff
@-rm -f ${WORLDTMP}/usr/bin/grotty
@-rm -f ${WORLDTMP}/usr/bin/pic
@-rm -f ${WORLDTMP}/usr/bin/tbl
ln -s /usr/bin/lorder ${WORLDTMP}/usr/bin/lorder
ln -s /usr/bin/groff ${WORLDTMP}/usr/bin/groff
ln -s /usr/bin/troff ${WORLDTMP}/usr/bin/troff
ln -s /usr/bin/grotty ${WORLDTMP}/usr/bin/grotty
ln -s /usr/bin/pic ${WORLDTMP}/usr/bin/pic
ln -s /usr/bin/tbl ${WORLDTMP}/usr/bin/tbl
@echo
@echo "--------------------------------------------------------------"
@echo " Build tools to compile and install the libraries...."
@echo "--------------------------------------------------------------"
.for d in \
gnu/usr.bin/gperf \
gnu/usr.bin/bison \
gnu/usr.bin/binutils \
usr.bin/tsort \
gnu/usr.bin/cc \
lib/csu/${MACHINE_ARCH} \
usr.bin/compile_et \
usr.bin/lex/lib \
usr.bin/mk_cmds \
usr.bin/uudecode
cd ${.CURDIR}/$d && ${MAKE} obj && \
${MAKE} ${MK_FLAGS} -DBOOTSTRAP depend && \
${MAKE} ${MK_FLAGS} -DBOOTSTRAP all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.endfor
#
# libraries - build and install the libraries
#
libraries:
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/csu/${MACHINE_ARCH}"
@cd ${.CURDIR}/lib/csu/${MACHINE_ARCH} && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libc"
@cd ${.CURDIR}/lib/libc && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libcompat"
@cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libutil"
@cd ${.CURDIR}/lib/libutil && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libmytinfo"
@cd ${.CURDIR}/lib/libmytinfo && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libncurses"
@cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib/libtermcap"
@cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/gnu/lib"
@cd ${.CURDIR}/gnu/lib && ${MAKE} ${CLEANDIR} ${OBJDIR} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
@echo "-----------------------"
@echo "Making ${.CURDIR}/secure/lib"
@cd ${.CURDIR}/secure/lib && ${MAKE} ${OBJDIR} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.endif
@echo "-----------------------"
@echo "Making ${.CURDIR}/lib"
@cd ${.CURDIR}/lib && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
@echo "-----------------------"
@echo "Making ${.CURDIR}/usr.bin/lex/lib"
@cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4)
@echo "-----------------------"
@echo "Making ${.CURDIR}/kerberosIV/lib"
@cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.endif
#
# 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.
#
# gnu/usr.bin/awk
# gnu/usr.bin/groff
# bin/sh
# usr.bin/symorder
build-tools:
@-rm -f ${WORLDTMP}/usr/bin/awk
@-rm -f ${WORLDTMP}/bin/sh
ln -s /usr/bin/awk ${WORLDTMP}/usr/bin/awk
ln -s /bin/sh ${WORLDTMP}/bin/sh
.for d in \
gnu/usr.bin/make \
gnu/usr.bin/xinstall \
gnu/usr.bin/lex \
gnu/usr.bin/gperf \
gnu/usr.bin/bison \
gnu/usr.bin/binutils \
usr.bin/tsort \
gnu/usr.bin/cc \
usr.bin/compile_et \
usr.bin/lex/lib \
usr.bin/mk_cmds \
usr.bin/uudecode \
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 \
share/info \
usr.bin/basename \
usr.bin/cap_mkdb \
usr.bin/chflags \
usr.bin/cmp \
usr.bin/col \
usr.bin/cpp \
usr.bin/expand \
usr.bin/file2c \
usr.bin/find \
usr.bin/gencat \
usr.bin/m4 \
usr.bin/mkdep \
usr.bin/paste \
usr.bin/printf \
usr.bin/sed \
usr.bin/soelim \
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/yacc \
usr.sbin/chown \
usr.sbin/mtree \
usr.sbin/zic \
gnu/usr.bin/grep \
gnu/usr.bin/gzip \
gnu/usr.bin/sort \
gnu/usr.bin/texinfo
@echo "---------------------------"
@echo "Making ${.CURDIR}/$d"
@cd ${.CURDIR}/$d && ${MAKE} ${CLEANDIR} ${OBJDIR} && \
${MAKE} depend && \
${MAKE} ${MK_FLAGS} all && \
${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
.endfor
.for __target in clean cleandir obj depend
.for entry in ${SUBDIR}
${entry}.${__target}__D: .PHONY
if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \
${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH}"; \
edir=${entry}.${MACHINE_ARCH}; \
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