aboutsummaryrefslogblamecommitdiff
path: root/Makefile.alpha
blob: 7a1b29c681fac3c968d2043ad380fd322c2920c9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                                                         












                                                               












                                                                       




                                                                   
                                                                       



                                                             


                   

                        





                                                                       
                                                               





















                                                                                         

                                                                 
                                                                   
                                 
                                                               
                                                       
                                                                                 






















                                                                                  



                                                                         

                                                            


                                     
                            


                                                                              






                                                                                     
                                         





                                                                              
                                        
                                                                     
                                        
                                                                       

                                                                        
                                                                                 



                                                                              
                                        
                                                                     
                                        
                                                                       

                                                                        
                                                                                 



                                                                              
                                            



                                                                              
                                          



                                                                              
                                            



                                                                              
                                                



                                                                              
                                            







                                                                              
                                                         



                                                                              
                                            



                                                                              
                                              

                                                                              


                                                                              
                                              


                                                                              

                                                                              
                                             



                                                                              










                                                                          






                                                          

       






















                                                                            
                                                                     

                                                                    

                                                         

                                                                    


                                                            




















                                                                             

                                                                      








                                                                     
                                                             











                                                                       
                                                                             





















                                                                          
                                                                          









                                                                     
          
                                                                              
                                                       
                                                                              
                                          
                                                               
             


                                                                              

                                         
                                         

                                         
                                         
                                         

                                         
                                         
                                         


                                         
                                            

                                                           






                                                                    
                                       

                                                                     

                                                                    


                                                      

                                                                    




                                                                    


                                                         

                                                                    


                                                            

                                                                    


                                                            

                                                                    


                                                            

                                                                    


                                                                           

                                                                    
                                                             


                                                                  


                                                                    


                                                 

                                                                    


                                                             

                                                                    
                                                                      


                                                            


                                                                    



                                                                        

            
                                 


                                 




                                 
                                 



                                 
                                 



















                                 





















                                 
                                 


                                 

                                 



                                                               






                                                                    


                                                                       










                                                       
# $Id: Makefile.alpha,v 1.13 1998/05/12 21:04:53 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 -DNOPIC -DNOLIBC_R

.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 " You will need to manually edit /etc/group on your NetBSD"
	@echo " system to include any missing groups in FreeBSD's"
	@echo " src/etc/group."
	@echo
	@echo " You will need to manually add the man user."
	@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 ${MK_FLAGS} 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 ${MK_FLAGS} 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} && ${XMAKE} 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
.endfor

dirs_clean:
	@echo DIRS = ${DIRS}
.for d in ${DIRS}
	cd ${.CURDIR}/$d && ${XMAKE} ${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} ${MK_FLAGS} depend && \
		${MAKE} ${MK_FLAGS} all && \
		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
	cd ${.CURDIR}/usr.bin/xinstall && \
		${MAKE} ${MK_FLAGS} ${OBJDIR} depend && \
		${MAKE} ${MK_FLAGS} all && \
		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
	cd ${.CURDIR}/usr.bin/lex && \
		${MAKE} ${MK_FLAGS} ${OBJDIR} bootstrap && \
		${MAKE} ${MK_FLAGS} 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} 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

#
# 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
	ln -s /usr/bin/lorder        ${WORLDTMP}/usr/bin/lorder
	@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/join		\
		usr.bin/mk_cmds		\
		usr.bin/uudecode	\
		gnu/usr.bin/bc		\
		gnu/usr.bin/groff
	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.
#
build-tools:
.for d in			\
	usr.bin/make 		\
	usr.bin/xinstall 	\
	usr.bin/lex 		\
	gnu/usr.bin/gperf	\
	gnu/usr.bin/bison	\
	gnu/usr.bin/binutils	\
	usr.bin/tsort		\
	gnu/usr.bin/cc		\
	usr.bin/env		\
	usr.bin/compile_et	\
	usr.bin/lex/lib		\
	usr.bin/mk_cmds		\
	usr.bin/uudecode	\
	bin/sh			\
	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/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/awk		\
	gnu/usr.bin/grep	\
	gnu/usr.bin/gzip	\
	gnu/usr.bin/sort	\
	gnu/usr.bin/texinfo	\
	gnu/usr.bin/perl/perl
	@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