Makefile.inc1 revision 46314
118579Sfenner# 2100787Sfenner# $Id: Makefile.inc1,v 1.74 1999/04/20 05:33:07 jkoshy Exp $ 318579Sfenner# 418579Sfenner# Make command line options: 518579Sfenner# -DCLOBBER will remove /usr/include 618579Sfenner# -DMAKE_KERBEROS4 to build KerberosIV 718579Sfenner# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 818579Sfenner# -DNOCLEAN do not clean at all 918579Sfenner# -DNOTOOLS do not rebuild any tools first 1018579Sfenner# -DNOCRYPT will prevent building of crypt versions 1118579Sfenner# -DNOPROFILE do not build profiled libraries 1218579Sfenner# -DNOSECURE do not go into secure subdir 1318579Sfenner# -DNOGAMES do not go into games subdir 1418579Sfenner# -DNOSHARE do not go into share subdir 1518579Sfenner# -DNOINFO do not make or install info files 1618579Sfenner# -DNOLIBC_R do not build libc_r. 1718579Sfenner# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 1818579Sfenner 1918579Sfenner# 2018579Sfenner# The intended user-driven targets are: 2118579Sfenner# buildworld - rebuild *everything*, including glue to help do upgrades 2218579Sfenner# installworld- install everything built by "buildworld" 2318579Sfenner# update - convenient way to update your source tree (eg: sup/cvs) 24100787Sfenner# most - build user commands, no libraries or include files 2518579Sfenner# installmost - install user commands, no libraries or include files 2658835Sshin# 2718579Sfenner# Standard targets (not defined here) are documented in the makefiles in 28100787Sfenner# /usr/share/mk. These include: 2918579Sfenner# obj depend all install clean cleandepend cleanobj 3058835Sshin 3158835Sshin# Put initial settings here. 3258835SshinSUBDIR= 3318579Sfenner 3418579Sfenner# We must do share/info early so that installation of info `dir' 3518579Sfenner# entries works correctly. Do it first since it is less likely to 3618579Sfenner# grow dependencies on include and lib than vice versa. 3718579Sfenner.if exists(${.CURDIR}/share/info) 3818579SfennerSUBDIR+= share/info 3918579Sfenner.endif 4018579Sfenner 4118579Sfenner# We must do include and lib early so that the perl *.ph generation 4218579Sfenner# works correctly as it uses the header files installed by this. 4377816Sru.if exists(${.CURDIR}/include) 4477816SruSUBDIR+= include 4577816Sru.endif 4618579Sfenner.if exists(${.CURDIR}/lib) 4718579SfennerSUBDIR+= lib 4818579Sfenner.endif 4918579Sfenner 5018579Sfenner.if exists(${.CURDIR}/bin) 5118579SfennerSUBDIR+= bin 5218579Sfenner.endif 5318579Sfenner.if exists(${.CURDIR}/games) && !defined(NOGAMES) 5418579SfennerSUBDIR+= games 5518579Sfenner.endif 5618579Sfenner.if exists(${.CURDIR}/gnu) 5718579SfennerSUBDIR+= gnu 5818579Sfenner.endif 5918579Sfenner.if exists(${.CURDIR}/kerberosIV) && exists(${.CURDIR}/crypto) && \ 6077816Sru !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 6118579SfennerSUBDIR+= kerberosIV 6218579Sfenner.endif 6318579Sfenner.if exists(${.CURDIR}/libexec) 6418579SfennerSUBDIR+= libexec 6518579Sfenner.endif 6618579Sfenner.if exists(${.CURDIR}/sbin) 6718579SfennerSUBDIR+= sbin 6818579Sfenner.endif 6918579Sfenner.if exists(${.CURDIR}/share) && !defined(NOSHARE) 7018579SfennerSUBDIR+= share 7118579Sfenner.endif 7218579Sfenner.if exists(${.CURDIR}/sys) 7318579SfennerSUBDIR+= sys 7418579Sfenner.endif 7518579Sfenner.if exists(${.CURDIR}/usr.bin) 7618579SfennerSUBDIR+= usr.bin 7718579Sfenner.endif 7818579Sfenner.if exists(${.CURDIR}/usr.sbin) 7918579SfennerSUBDIR+= usr.sbin 8077816Sru.endif 8118579Sfenner.if exists(${.CURDIR}/secure) && !defined(NOCRYPT) && !defined(NOSECURE) 8218579SfennerSUBDIR+= secure 8318579Sfenner.endif 8418579Sfenner 8518579Sfenner# etc must be last for "distribute" to work 8618579Sfenner.if exists(${.CURDIR}/etc) 8718579SfennerSUBDIR+= etc 8818579Sfenner.endif 8918579Sfenner 9018579Sfenner# These are last, since it is nice to at least get the base system 9118579Sfenner# rebuilt before you do them. 9218579Sfenner.if defined(LOCAL_DIRS) 9318579Sfenner.for _DIR in ${LOCAL_DIRS} 9418579Sfenner.if exists(${.CURDIR}/${_DIR}) & exists(${.CURDIR}/${_DIR}/Makefile) 9518579SfennerSUBDIR+= ${_DIR} 9618579Sfenner.endif 9718579Sfenner.endfor 9818579Sfenner.endif 9918579Sfenner 10018579SfennerOBJDIR= obj 10118579Sfenner 10218579Sfenner.if defined(NOCLEAN) 10318579SfennerCLEANDIR= 10418579Sfenner.else 10518579Sfenner.if defined(NOCLEANDIR) 10618579SfennerCLEANDIR= clean cleandepend 10718579Sfenner.else 10818579SfennerCLEANDIR= cleandir 10918579Sfenner.endif 11018579Sfenner.endif 11118579Sfenner 11218579Sfenner.if !defined(NOCLEAN) 11318579Sfenner_NODEPEND= true 11418579Sfenner.endif 11518579Sfenner.if defined(_NODEPEND) 11618579Sfenner_DEPEND= cleandepend 11718579Sfenner.else 11818579Sfenner_DEPEND= depend 11918579Sfenner.endif 12018579Sfenner 12118579SfennerSUP?= cvsup 12218579SfennerSUPFLAGS?= -g -L 2 -P - 12318579Sfenner 12418579Sfenner# 12518579Sfenner# While building tools for bootstrapping, we don't need to waste time on 12618579Sfenner# shared or profiled libraries, shared linkage, or documentation, except 12718579Sfenner# when the tools won't get cleaned we must use the defaults for shared 12818579Sfenner# libraries and shared linkage (and this doesn't waste time). 12918579Sfenner# XXX actually, we do need to waste time building shared libraries. 13018579Sfenner# 13118579Sfenner.if defined(NOCLEAN) 13218579SfennerMK_FLAGS= -DWORLD -DNOINFO -DNOMAN -DNOPROFILE 13318579Sfenner.else 13418579SfennerMK_FLAGS= -DWORLD -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED 13518579Sfenner.endif 13618579Sfenner 13718579Sfenner# 13818579Sfenner# Define the location of the temporary installation directory. Note that 13918579Sfenner# MAKEOBJDIRPREFIX normally isn't defined so if the current directory is 14018579Sfenner# /usr/src, then the world temporary directory is /usr/obj/usr/src/tmp. 14118579Sfenner# 14218579Sfenner# During the transition from aout to elf format on i386, MAKEOBJDIRPREFIX 14318579Sfenner# is set by the parent makefile (Makefile.inc0) to be /usr/obj/${OBJFORMAT} 14418579Sfenner# in order to keep aout and elf format files apart. 14518579Sfenner# 14618579Sfenner.if defined(MAKEOBJDIRPREFIX) 14718579SfennerWORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp 14818579Sfenner.else 14918579SfennerWORLDTMP= /usr/obj${.CURDIR}/tmp 15018579Sfenner.endif 15118579Sfenner 15218579Sfenner# 15318579Sfenner# Define the PATH to the build tools. 15418579Sfenner# 15518579Sfenner# If not building tools, the PATH always points to the installed binaries. 15618579Sfenner# The NOTOOLS option assumes that in installed tools are good enough and that 15718579Sfenner# the user's PATH will locate to appropriate tools. This option is required 15818579Sfenner# for a cross-compiled build environment. 15918579Sfenner# 16018579Sfenner# If building tools, then the PATH includes the world temporary directories 16118579Sfenner# so that the bootstrapped tools are used as soon as they are built. The 16218579Sfenner# strict path is for use after all tools are supposed to have been 16318579Sfenner# bootstrapped. It doesn't allow any of the installed tools to be used. 16418579Sfenner# 16518579Sfenner.if defined(NOTOOLS) 16618579Sfenner# Default root of the tool tree 16718579SfennerTOOLROOT?= 16818579Sfenner# Choose the PATH relative to the root of the tool tree 16918579SfennerPATH= ${TOOLROOT}/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/sbin:${TOOLROOT}/usr/bin 17018579Sfenner.else 17118579SfennerTOOLROOT= ${WORLDTMP} 17218579Sfenner.endif 17318579SfennerSTRICTTMPPATH= ${TOOLROOT}/sbin:${TOOLROOT}/usr/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/bin 17418579SfennerTMPPATH= ${STRICTTMPPATH}:${PATH} 17518579Sfenner 17618579Sfenner# XXX COMPILER_PATH is needed for finding cc1, ld and as 17718579Sfenner# XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecessary now 17818579Sfenner# that LIBRARY_PATH is set. We still can't use -nostdlib, since gcc 17918579Sfenner# wouldn't link *crt.o or libgcc if it were used. 18018579Sfenner# XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't 18118579Sfenner# want that - all compile-time library paths should be resolved by gcc. 18218579Sfenner# It fails for set[ug]id executables (are any used?). 18318579SfennerCOMPILER_ENV= BISON_SIMPLE=${TOOLROOT}/usr/share/misc/bison.simple \ 18418579Sfenner COMPILER_PATH=${TOOLROOT}/usr/libexec:${TOOLROOT}/usr/bin \ 18518579Sfenner GCC_EXEC_PREFIX=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib/ \ 18618579Sfenner LD_LIBRARY_PATH=${TOOLROOT}${SHLIBDIR} \ 18718579Sfenner LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib 18818579Sfenner 18918579SfennerBMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t \ 19018579Sfenner OBJFORMAT_PATH=${TOOLROOT}/usr/libexec:/usr/libexec 19118579SfennerXMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \ 19218579Sfenner PERL5LIB=${DESTDIR}/usr/libdata/perl/5.00503 \ 19318579Sfenner OBJFORMAT_PATH=${TOOLROOT}/usr/libexec \ 19418579Sfenner CFLAGS="-nostdinc ${CFLAGS}" # XXX -nostdlib 19518579Sfenner 19618579Sfenner# used to compile and install 'make' in temporary build tree 19718579SfennerMAKETMP= ${WORLDTMP}/make 19818579SfennerIBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP} 19918579Sfenner 20018579Sfenner.if defined(NOTOOLS) 20118579Sfenner# bootstrap make 20218579SfennerBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 20318579Sfenner# cross make used for compilation 20418579SfennerXMAKE= ${XMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 20518579Sfenner# cross make used for final installation 20618579SfennerIXMAKE= ${XMAKEENV} ${MAKE} 20718579Sfenner.else 20818579Sfenner# bootstrap make 20918579SfennerBMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 21018579Sfenner# cross make used for compilation 21118579SfennerXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 21277816Sru# cross make used for final installation 21377816SruIXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make 21477816Sru.endif 21518579Sfenner 21618579Sfenner# 21718579Sfenner# buildworld 21818579Sfenner# 21918579Sfenner# Attempt to rebuild the entire system, with reasonable chance of 22018579Sfenner# success, regardless of how old your existing system is. 22118579Sfenner# 22218579Sfennerbuildworld: check-objformat 22346542Sarchie.if !defined(NOCLEAN) 224100789Sfenner @echo 22518579Sfenner @echo "--------------------------------------------------------------" 22618579Sfenner @echo ">>> Cleaning up the temporary ${OBJFORMAT} build tree" 22718579Sfenner @echo "--------------------------------------------------------------" 22858804Sshin mkdir -p ${WORLDTMP} 22958804Sshin -chflags -R noschg ${WORLDTMP}/ 230171135Sgnn rm -rf ${WORLDTMP} 23158804Sshin.endif 23258804Sshin.if !defined(NOTOOLS) 23318579Sfenner @echo 234100787Sfenner @echo "--------------------------------------------------------------" 23518579Sfenner @echo ">>> Making make" 236100787Sfenner @echo "--------------------------------------------------------------" 23718579Sfenner mkdir -p ${WORLDTMP}/usr/bin ${MAKETMP} 23818579Sfenner ( \ 23918579Sfenner cd ${.CURDIR}/usr.bin/make; \ 24018579Sfenner MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 24118579Sfenner ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all; \ 24218579Sfenner ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install; \ 24318579Sfenner ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean \ 24418579Sfenner ) 24518579Sfenner @echo 24618579Sfenner @echo "--------------------------------------------------------------" 247100787Sfenner @echo ">>> Making mtree" 248100787Sfenner @echo "--------------------------------------------------------------" 249100787Sfenner mkdir -p ${WORLDTMP}/usr/sbin ${WORLDTMP}/mtree 250100787Sfenner ( \ 251100787Sfenner cd ${.CURDIR}/usr.sbin/mtree; \ 252100787Sfenner MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 253100787Sfenner export MAKEOBJDIR=${WORLDTMP}/mtree; \ 254100787Sfenner ${BMAKE} ${MK_FLAGS} all; \ 255100787Sfenner ${BMAKE} ${MK_FLAGS} -B install clean \ 256100787Sfenner ) 257100787Sfenner.endif 258100787Sfenner @echo 259100787Sfenner @echo "--------------------------------------------------------------" 260176428Srpaulo @echo ">>> Making hierarchy" 261100787Sfenner @echo "--------------------------------------------------------------" 262100787Sfenner mkdir -p ${WORLDTMP} 26318579Sfenner cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 hierarchy 26418579Sfenner.if !defined(NOCLEAN) 26518579Sfenner @echo 26618579Sfenner @echo "--------------------------------------------------------------" 26718579Sfenner @echo ">>> Cleaning up the ${OBJFORMAT} obj tree" 26818579Sfenner @echo "--------------------------------------------------------------" 26918579Sfenner cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/} 27018579Sfenner.endif 27118579Sfenner @echo 27218579Sfenner @echo "--------------------------------------------------------------" 27346542Sarchie @echo ">>> Rebuilding the ${OBJFORMAT} obj tree" 27446542Sarchie @echo "--------------------------------------------------------------" 27546542Sarchie cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 par-${OBJDIR} 27646542Sarchie.if !defined(NOTOOLS) 27746542Sarchie @echo 27846542Sarchie @echo "--------------------------------------------------------------" 27946542Sarchie @echo ">>> Rebuilding ${OBJFORMAT} bootstrap tools" 28046542Sarchie @echo "--------------------------------------------------------------" 28146542Sarchie cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap 28246542Sarchie @echo 28346542Sarchie @echo "--------------------------------------------------------------" 28446542Sarchie @echo ">>> Rebuilding tools necessary to build the include files" 28546542Sarchie @echo "--------------------------------------------------------------" 28646542Sarchie cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 include-tools 287100787Sfenner.endif 288100787Sfenner @echo 289100787Sfenner @echo "--------------------------------------------------------------" 290100787Sfenner @echo ">>> Rebuilding ${DESTDIR}/usr/include" 291100787Sfenner @echo "--------------------------------------------------------------" 292100787Sfenner cd ${.CURDIR}; SHARED=copies ${BMAKE} -f Makefile.inc1 includes 293100787Sfenner @echo 29418579Sfenner @echo "--------------------------------------------------------------" 29518579Sfenner @echo ">>> Rebuilding bootstrap libraries" 29618579Sfenner @echo "--------------------------------------------------------------" 29718579Sfenner cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap-libraries 29818579Sfenner.if !defined(NOTOOLS) 29918579Sfenner @echo 30018579Sfenner @echo "--------------------------------------------------------------" 301100787Sfenner @echo ">>> Rebuilding tools needed to build libraries" 302100787Sfenner @echo "--------------------------------------------------------------" 303100787Sfenner cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 lib-tools 304100787Sfenner.endif 305100787Sfenner.if !defined(NOTOOLS) 30646542Sarchie @echo 307100787Sfenner @echo "--------------------------------------------------------------" 30846542Sarchie @echo ">>> Rebuilding all other tools needed to build the ${OBJFORMAT} world" 30918579Sfenner @echo "--------------------------------------------------------------" 31018579Sfenner cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 build-tools 31146542Sarchie.endif 312100787Sfenner.if !defined(_NODEPEND) 31318579Sfenner @echo 314163387Sdwmalone @echo "--------------------------------------------------------------" 315163387Sdwmalone @echo ">>> Rebuilding dependencies" 316163387Sdwmalone @echo "--------------------------------------------------------------" 31718579Sfenner cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-depend 31818579Sfenner.endif 31918579Sfenner @echo 32018579Sfenner @echo "--------------------------------------------------------------" 32118579Sfenner @echo ">>> Building ${OBJFORMAT} libraries" 32218579Sfenner @echo "--------------------------------------------------------------" 32318579Sfenner cd ${.CURDIR}; ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries 324100787Sfenner @echo 32518579Sfenner @echo "--------------------------------------------------------------" 32646542Sarchie @echo ">>> Building everything.." 327100787Sfenner @echo "--------------------------------------------------------------" 32818579Sfenner cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all 329100787Sfenner 330100787Sfennereverything: 33118579Sfenner @echo "--------------------------------------------------------------" 33218579Sfenner @echo ">>> Building everything.." 33318579Sfenner @echo "--------------------------------------------------------------" 33418579Sfenner cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all 335100787Sfenner 336100787Sfenner# 33718579Sfenner# installworld 338163387Sdwmalone# 33977816Sru# Installs everything compiled by a 'buildworld'. 340100787Sfenner# 34118579Sfennerinstallworld: 34246542Sarchie cd ${.CURDIR}; ${IXMAKE} -f Makefile.inc1 reinstall 34318579Sfenner 34418579Sfenner# 34518579Sfenner# reinstall 34618579Sfenner# 34718579Sfenner# If you have a build server, you can NFS mount the source and obj directories 348176428Srpaulo# and do a 'make reinstall' on the *client* to install new binaries from the 349176428Srpaulo# most recent server build. 350176428Srpaulo# 351100787Sfennerreinstall: 352100787Sfenner @echo "--------------------------------------------------------------" 353100787Sfenner @echo ">>> Making hierarchy" 354100787Sfenner @echo "--------------------------------------------------------------" 355100787Sfenner cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 356100787Sfenner @echo 357158424Scjc @echo "--------------------------------------------------------------" 358163387Sdwmalone @echo ">>> Installing everything.." 35918579Sfenner @echo "--------------------------------------------------------------" 36018579Sfenner cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 36118579Sfenner.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" && !defined(DESTDIR) 36218579Sfenner @echo 36318579Sfenner @echo "--------------------------------------------------------------" 36418579Sfenner @echo ">>> Re-scanning the shared libraries.." 36518579Sfenner @echo "--------------------------------------------------------------" 366100787Sfenner -cd ${.CURDIR}; /sbin/ldconfig -R 367100787Sfenner.endif 368100787Sfenner.if !defined(NOMAN) 369100535Sfenner @echo 37018579Sfenner @echo "--------------------------------------------------------------" 37118579Sfenner @echo ">>> Rebuilding man page indices" 372100789Sfenner @echo "--------------------------------------------------------------" 37318579Sfenner cd ${.CURDIR}/share/man; ${MAKE} makedb 37418579Sfenner.endif 37518579Sfenner 37658804Sshin# 37758804Sshin# update 37858804Sshin# 37946542Sarchie# Update the source tree, by running sup and/or running cvs to update to the 380100787Sfenner# latest copy. 381100787Sfenner# 38218579Sfennerupdate: 38367682Sobrien.if defined(SUP_UPDATE) 384100787Sfenner @echo "--------------------------------------------------------------" 385163387Sdwmalone @echo ">>> Running ${SUP}" 386100787Sfenner @echo "--------------------------------------------------------------" 387100787Sfenner @${SUP} ${SUPFLAGS} ${SUPFILE} 388100787Sfenner.if defined(SUPFILE1) 38918579Sfenner @${SUP} ${SUPFLAGS} ${SUPFILE1} 39046542Sarchie.endif 39146542Sarchie.if defined(SUPFILE2) 39246542Sarchie @${SUP} ${SUPFLAGS} ${SUPFILE2} 39346542Sarchie.endif 39446542Sarchie.endif 39546542Sarchie.if defined(CVS_UPDATE) 39646542Sarchie @echo "--------------------------------------------------------------" 39746542Sarchie @echo ">>> Updating /usr/src from cvs repository" ${CVSROOT} 398100535Sfenner @echo "--------------------------------------------------------------" 399100535Sfenner cd ${.CURDIR}; cvs -q update -P -d 40046542Sarchie.endif 401100787Sfenner 402100787Sfenner# 403100787Sfenner# most 404163387Sdwmalone# 405100787Sfenner# Build most of the user binaries on the existing system libs and includes. 406100787Sfenner# 407100787Sfennermost: 408100787Sfenner @echo "--------------------------------------------------------------" 409100787Sfenner @echo ">>> Building programs only" 410100787Sfenner @echo "--------------------------------------------------------------" 411100787Sfenner cd ${.CURDIR}/bin; ${MAKE} all 412100787Sfenner cd ${.CURDIR}/sbin; ${MAKE} all 413100787Sfenner cd ${.CURDIR}/libexec; ${MAKE} all 41446542Sarchie cd ${.CURDIR}/usr.bin; ${MAKE} all 41546542Sarchie cd ${.CURDIR}/usr.sbin; ${MAKE} all 41646542Sarchie cd ${.CURDIR}/gnu/libexec; ${MAKE} all 41746542Sarchie cd ${.CURDIR}/gnu/usr.bin; ${MAKE} all 41846542Sarchie cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} all 419163387Sdwmalone#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 42046542Sarchie# cd ${.CURDIR}/kerberosIV; ${MAKE} most 42146542Sarchie#.endif 42246542Sarchie#.if !defined(NOSECURE) && !defined(NOCRYPT) 42346542Sarchie# cd ${.CURDIR}/secure; ${MAKE} most 42446542Sarchie#.endif 42546542Sarchie 42646542Sarchie# 42746542Sarchie# installmost 428163387Sdwmalone# 42946542Sarchie# Install the binaries built by the 'most' target. This does not include 43046542Sarchie# libraries or include files. 43146542Sarchie# 43246542Sarchieinstallmost: 43346542Sarchie @echo "--------------------------------------------------------------" 43446542Sarchie @echo ">>> Installing programs only" 43546542Sarchie @echo "--------------------------------------------------------------" 43646542Sarchie cd ${.CURDIR}/bin; ${MAKE} install 437163387Sdwmalone cd ${.CURDIR}/sbin; ${MAKE} install 43846542Sarchie cd ${.CURDIR}/libexec; ${MAKE} install 43946542Sarchie cd ${.CURDIR}/usr.bin; ${MAKE} install 44046542Sarchie cd ${.CURDIR}/usr.sbin; ${MAKE} install 44146542Sarchie cd ${.CURDIR}/gnu/libexec; ${MAKE} install 44246542Sarchie cd ${.CURDIR}/gnu/usr.bin; ${MAKE} install 44346542Sarchie cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} install 44446542Sarchie#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 445100535Sfenner# cd ${.CURDIR}/kerberosIV; ${MAKE} installmost 446163387Sdwmalone#.endif 447100535Sfenner#.if !defined(NOSECURE) && !defined(NOCRYPT) 448100535Sfenner# cd ${.CURDIR}/secure; ${MAKE} installmost 449100535Sfenner#.endif 450100535Sfenner 451100535Sfenner# 452100535Sfenner# ------------------------------------------------------------------------ 453100535Sfenner# 45446542Sarchie# From here onwards are utility targets used by the 'make world' and 455163387Sdwmalone# related targets. If your 'world' breaks, you may like to try to fix 45646542Sarchie# the problem and manually run the following targets to attempt to 45746542Sarchie# complete the build. Beware, this is *not* guaranteed to work, you 45846542Sarchie# need to have a pretty good grip on the current state of the system 45946542Sarchie# to attempt to manually finish it. If in doubt, 'make world' again. 46046542Sarchie# 46146542Sarchie 46246542Sarchie# 46346542Sarchie# hierarchy - ensure that all the needed directories are present 46446542Sarchie# 465163387Sdwmalonehierarchy: 466163387Sdwmalone cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 46718579Sfenner 46818579Sfenner# 46918579Sfenner# bootstrap - [re]build tools needed to run the actual build, this includes 470100787Sfenner# tools needed by 'make depend', as some tools are needed to generate source 47118579Sfenner# for the dependency information to be gathered from. 472100787Sfenner# 473100787Sfennerbootstrap: 474100787Sfenner cd ${.CURDIR}/usr.bin/make; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 47518579Sfenner ${MAKE} ${MK_FLAGS} all; \ 476100787Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 47718579Sfenner cd ${.CURDIR}/usr.bin/xinstall; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 47818579Sfenner ${MAKE} ${MK_FLAGS} all; \ 47918579Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 48018579Sfenner cd ${.CURDIR}/usr.bin/yacc; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 481100787Sfenner ${MAKE} ${MK_FLAGS} all; \ 48218579Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 483100787Sfenner cd ${.CURDIR}/usr.bin/lex; ${MAKE} bootstrap; \ 484100787Sfenner ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 485100787Sfenner ${MAKE} ${MK_FLAGS} -DNOLIB all; \ 48648221Sarchie ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} 48718803Ssef cd ${.CURDIR}/usr.bin/lex; ${MAKE} ${OBJDIR} 48818583Sfenner cd ${.CURDIR}/usr.sbin/mtree; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 48918579Sfenner ${MAKE} ${MK_FLAGS} all; \ 490100787Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 491100787Sfenner 492100787Sfenner# 493100787Sfenner# include-tools - generally the same as 'bootstrap', except that it's for 494100787Sfenner# things that are specifically needed to generate include files. 495100787Sfenner# 496100787Sfenner# XXX should be merged with bootstrap, it's not worth keeeping them separate. 497100787Sfenner# Well, maybe it is now. We force 'cleandepend' here to avoid dependencies 49818583Sfenner# on cleaned away headers in ${WORLDTMP}. 49918583Sfenner# 50018583Sfennerinclude-tools: 50118583Sfenner.for d in usr.bin/compile_et usr.bin/rpcgen 50218583Sfenner cd ${.CURDIR}/$d; ${MAKE} cleandepend; \ 50318583Sfenner ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 50418583Sfenner ${MAKE} ${MK_FLAGS} all; \ 50518583Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 50618583Sfenner.endfor 50718583Sfenner 50818583Sfenner# 50918583Sfenner# includes - possibly generate and install the include files. 51018583Sfenner# 51118583Sfennerincludes: 512220968Ssimon.if defined(CLOBBER) 513220968Ssimon rm -rf ${DESTDIR}/usr/include/* 514220968Ssimon mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 515220968Ssimon -p ${DESTDIR}/usr/include 51618583Sfenner.endif 51777816Sru cd ${.CURDIR}/include; ${MAKE} -B all install 51877816Sru cd ${.CURDIR}/gnu/include; ${MAKE} install 51977816Sru cd ${.CURDIR}/gnu/lib/libmp; ${MAKE} beforeinstall 52077816Sru cd ${.CURDIR}/gnu/lib/libobjc; ${MAKE} beforeinstall 52177816Sru cd ${.CURDIR}/gnu/lib/libreadline; ${MAKE} beforeinstall 522100787Sfenner cd ${.CURDIR}/gnu/lib/libregex; ${MAKE} beforeinstall 523100787Sfenner cd ${.CURDIR}/gnu/lib/libstdc++; ${MAKE} beforeinstall 524100787Sfenner cd ${.CURDIR}/gnu/lib/libdialog; ${MAKE} beforeinstall 525100787Sfenner cd ${.CURDIR}/gnu/lib/libgmp; ${MAKE} beforeinstall 52677816Sru cd ${.CURDIR}/gnu/usr.bin/cc/cc1plus; ${MAKE} beforeinstall 52777816Sru.if exists(${.CURDIR}/secure) && !defined(NOCRYPT) 52877816Sru cd ${.CURDIR}/secure/lib/libdes; ${MAKE} beforeinstall 52977816Sru.endif 53077816Sru.if exists(${.CURDIR}/kerberosIV) && !defined(NOCRYPT) && \ 531100787Sfenner defined(MAKE_KERBEROS4) 532100787Sfenner cd ${.CURDIR}/kerberosIV/lib/libacl; ${MAKE} beforeinstall 533100787Sfenner cd ${.CURDIR}/kerberosIV/lib/libkadm; ${MAKE} beforeinstall 53418579Sfenner cd ${.CURDIR}/kerberosIV/lib/libkafs; ${MAKE} beforeinstall 53518579Sfenner cd ${.CURDIR}/kerberosIV/lib/libkdb; ${MAKE} beforeinstall 53618579Sfenner cd ${.CURDIR}/kerberosIV/lib/libkrb; ${MAKE} beforeinstall 53718579Sfenner cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall 53818579Sfenner.else 539176428Srpaulo cd ${.CURDIR}/lib/libtelnet; ${MAKE} beforeinstall 54018579Sfenner.endif 541176428Srpaulo.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) 542176428Srpaulo cd ${.CURDIR}/lib/csu/${MACHINE_ARCH}; ${MAKE} beforeinstall 543176428Srpaulo.endif 544176428Srpaulo cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall 545176428Srpaulo cd ${.CURDIR}/lib/libatm; ${MAKE} beforeinstall 546176428Srpaulo cd ${.CURDIR}/lib/libdevstat; ${MAKE} beforeinstall 547176428Srpaulo cd ${.CURDIR}/lib/libc; ${MAKE} beforeinstall 548176428Srpaulo cd ${.CURDIR}/lib/libcalendar; ${MAKE} beforeinstall 549176428Srpaulo cd ${.CURDIR}/lib/libcam; ${MAKE} beforeinstall 55018579Sfenner cd ${.CURDIR}/lib/libcurses; ${MAKE} beforeinstall 55118579Sfenner cd ${.CURDIR}/lib/libdisk; ${MAKE} beforeinstall 55218579Sfenner cd ${.CURDIR}/lib/libedit; ${MAKE} beforeinstall 55318579Sfenner cd ${.CURDIR}/lib/libftpio; ${MAKE} beforeinstall 554163387Sdwmalone cd ${.CURDIR}/lib/libmd; ${MAKE} beforeinstall 555163387Sdwmalone cd ${.CURDIR}/lib/libmytinfo; ${MAKE} beforeinstall 556163387Sdwmalone cd ${.CURDIR}/lib/libncurses; ${MAKE} beforeinstall 557163387Sdwmalone.if !defined(WANT_CSRG_LIBM) 558158424Scjc cd ${.CURDIR}/lib/msun; ${MAKE} beforeinstall 559158424Scjc.endif 560158424Scjc cd ${.CURDIR}/lib/libopie; ${MAKE} beforeinstall 561158424Scjc cd ${.CURDIR}/lib/libpam/libpam; ${MAKE} beforeinstall 562100787Sfenner cd ${.CURDIR}/lib/libpcap; ${MAKE} beforeinstall 563100787Sfenner cd ${.CURDIR}/lib/libradius; ${MAKE} beforeinstall 564100787Sfenner cd ${.CURDIR}/lib/librpcsvc; ${MAKE} beforeinstall 565100787Sfenner cd ${.CURDIR}/lib/libskey; ${MAKE} beforeinstall 566100787Sfenner cd ${.CURDIR}/lib/libstand; ${MAKE} beforeinstall 567100787Sfenner cd ${.CURDIR}/lib/libtacplus; ${MAKE} beforeinstall 568100787Sfenner cd ${.CURDIR}/lib/libtermcap; ${MAKE} beforeinstall 569100787Sfenner cd ${.CURDIR}/lib/libcom_err; ${MAKE} beforeinstall 570100787Sfenner cd ${.CURDIR}/lib/libss; ${MAKE} -B hdrs beforeinstall 57118579Sfenner cd ${.CURDIR}/lib/libutil; ${MAKE} beforeinstall 57218579Sfenner cd ${.CURDIR}/lib/libvgl; ${MAKE} beforeinstall 57318579Sfenner cd ${.CURDIR}/lib/libwrap; ${MAKE} beforeinstall 57418579Sfenner cd ${.CURDIR}/lib/libz; ${MAKE} beforeinstall 57518579Sfenner cd ${.CURDIR}/usr.bin/f2c; ${MAKE} beforeinstall 57618579Sfenner cd ${.CURDIR}/usr.bin/lex; ${MAKE} beforeinstall 57718579Sfenner 578100787Sfenner# 57918579Sfenner# Declare tools if they are not required on all architectures. 58018579Sfenner# 58118579Sfenner.if ${MACHINE_ARCH} == "i386" 582100787Sfenner# aout tools: 583100787Sfenner_aout_ar = usr.bin/ar 58447071Sarchie_aout_as = gnu/usr.bin/as 58547071Sarchie_aout_ld = gnu/usr.bin/ld 586100787Sfenner_aout_nm = usr.bin/nm 587100787Sfenner_aout_ranlib = usr.bin/ranlib 588100787Sfenner_aout_size = usr.bin/size 589100787Sfenner_aout_strip = usr.bin/strip 59018579Sfenner# boot block/loader tools: 591100787Sfenner_btxld = usr.sbin/btxld 59218579Sfenner.endif 59318579Sfenner 59418579Sfenner# 59518579Sfenner# lib-tools - build tools to compile and install the libraries. 59618579Sfenner# 59718579Sfenner# XXX gperf is required for cc 59846542Sarchie# XXX a new ld and tsort is required for cc 599100787Sfennerlib-tools: 60046542Sarchie.for d in \ 60146542Sarchie gnu/usr.bin/gperf \ 60218579Sfenner ${_aout_ld} \ 603100787Sfenner usr.bin/tsort \ 604100787Sfenner ${_aout_as} \ 60518579Sfenner gnu/usr.bin/bison \ 60618579Sfenner gnu/usr.bin/cc \ 60718579Sfenner gnu/lib/libgcc \ 608100787Sfenner ${_aout_ar} \ 60918579Sfenner usr.bin/env \ 61018579Sfenner usr.bin/lex/lib \ 61118579Sfenner usr.bin/mk_cmds \ 61218579Sfenner ${_aout_nm} \ 61318579Sfenner ${_aout_ranlib} \ 61418579Sfenner ${_aout_strip} \ 61518579Sfenner gnu/usr.bin/binutils \ 61618579Sfenner usr.bin/uudecode \ 61718579Sfenner usr.bin/objformat 61818579Sfenner cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 61918579Sfenner ${MAKE} ${MK_FLAGS} all; \ 62018579Sfenner ${MAKE} ${MK_FLAGS} -B install; \ 62118579Sfenner ${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR} 62218579Sfenner.endfor 623100787Sfenner 624100787Sfenner# 625100787Sfenner# We have to know too much about ordering and subdirs in the lib trees: 626100787Sfenner# 62718579Sfenner# To satisfy shared library linkage when only the libraries being built 628100787Sfenner# are visible: 629100787Sfenner# 63018579Sfenner# csu must be built before all shared libaries for ELF. 63118579Sfenner# libcom_err must be built before libss. 63218579Sfenner# libcrypt must be built before libskey and libkrb. 63318579Sfenner# libdes must be built before libpam. 63418579Sfenner# libkrb must be built before libpam. 63518579Sfenner# libm must be built before libf2c and libstdc++. 636100787Sfenner# libmd must be built before libatm, libopie, libradius, libskey, 637100787Sfenner# libtacplus and libcrypt. 638100787Sfenner# libmytinfo must be built before libdialog and libncurses. 639100787Sfenner# libncurses must be built before libdialog. 64018579Sfenner# libradius must be built before libpam. 641100787Sfenner# libskey must be built before libpam. 642169144Smaxim# libtacplus must be built before libpam. 64318579Sfenner# libtermcap must be built before libcurses, libedit and libreadline. 64418579Sfenner# 645100787Sfenner# Some libraries are built conditionally and/or are in inconsistently 646100787Sfenner# named directories: 647100787Sfenner# 648100787Sfenner.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}.pcc) 649100787Sfenner_csu=lib/csu/${MACHINE_ARCH}.pcc 65018579Sfenner.elif ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" 65118579Sfenner_csu=lib/csu/i386-elf 65218579Sfenner.else 65318579Sfenner_csu=lib/csu/${MACHINE_ARCH} 65448221Sarchie.endif 65548221Sarchie 65648221Sarchie.if !defined(NOSECURE) && !defined(NOCRYPT) 657163387Sdwmalone_libcrypt= lib/libcrypt secure/lib/libcrypt 658163387Sdwmalone_secure_lib= secure/lib 659163387Sdwmalone.else 660100787Sfenner_libcrypt= lib/libcrypt 661100787Sfenner.endif 662100787Sfenner 663100787Sfenner.if !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 66447071Sarchie_kerberosIV_lib=kerberosIV/lib 66547071Sarchie.endif 66647071Sarchie 667100787Sfenner.if defined(WANT_CSRG_LIBM) 668100787Sfenner_libm= lib/libm 669100787Sfenner.else 670100787Sfenner_libm= lib/msun 671100787Sfenner.endif 672100787Sfenner 673100787Sfenner.if !defined(NOPERL) 674100787Sfenner_libperl= gnu/usr.bin/perl/libperl 67518579Sfenner.endif 67618579Sfenner 67718579Sfenner# 67818579Sfenner# bootstrap-libraries - build just enough libraries for the bootstrap 679100787Sfenner# tools, and install them under ${WORLDTMP}. 680100787Sfenner# 681100787Sfenner# Build csu early so that some tools get linked to the new 68218579Sfenner# version (too late for the main tools, however). Then build the 68318579Sfenner# necessary prerequisite libraries (libtermcap just needs to be before 684100787Sfenner# libcurses, and this only matters for the NOCLEAN case when NOPIC is 685100787Sfenner# not set). 686100787Sfenner# 687100787Sfenner# This is mostly wrong. The build tools must run on the host system, 688100787Sfenner# so they should use host libraries. We depend on the target being 689100787Sfenner# similar enough to the host for new target libraries to work on the 690100787Sfenner# host. 691100787Sfenner# 692100787Sfennerbootstrap-libraries: 693100787Sfenner.for _lib in ${_csu} lib/libtermcap \ 69418579Sfenner gnu/lib/libregex gnu/lib/libreadline lib/libc \ 69518579Sfenner lib/libcurses lib/libedit ${_libm} \ 69618579Sfenner lib/libmd lib/libcrypt lib/libutil lib/libz usr.bin/lex/lib \ 69718579Sfenner ${_libperl} 69818579Sfenner.if exists(${.CURDIR}/${_lib}) 69918579Sfenner cd ${.CURDIR}/${_lib}; \ 70018579Sfenner ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 70118579Sfenner ${MAKE} ${MK_FLAGS} all; \ 70218579Sfenner ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 70318579Sfenner.endif 70418579Sfenner.endfor 70518579Sfenner 70646542Sarchie# 70718579Sfenner# libraries - build all libraries, and install them under ${DESTDIR}. 70818579Sfenner# 70918579Sfenner# The ordering is not as special as for bootstrap-libraries. Build 71018579Sfenner# the prerequisites first, then build almost everything else in 71118579Sfenner# alphabetical order. 71218579Sfenner# 71318579Sfennerlibraries: 71418579Sfenner.for _lib in ${_csu} lib/libcom_err ${_libm} lib/libmd ${_libcrypt} \ 71518579Sfenner lib/libmytinfo lib/libncurses lib/libtermcap \ 716100787Sfenner lib/libradius lib/libskey lib/libtacplus \ 717100787Sfenner ${_secure_lib} ${_kerberosIV_lib} \ 718100787Sfenner gnu/lib ${_libperl} lib usr.bin/lex/lib \ 71918579Sfenner usr.sbin/pcvt/keycap 720100787Sfenner.if exists(${.CURDIR}/${_lib}) 72118579Sfenner cd ${.CURDIR}/${_lib}; ${MAKE} all; ${MAKE} -B install 72218579Sfenner.endif 723100787Sfenner.endfor 72418579Sfenner 72546542Sarchie# 726100787Sfenner# Exclude unused tools from build-tools. 72718579Sfenner# 72818579Sfenner.if !defined(NOGAMES) && exists(${.CURDIR}/games) 72918579Sfenner_adventure= games/adventure 73018579Sfenner_caesar= games/caesar 731100787Sfenner_hack= games/hack 732100787Sfenner_phantasia= games/phantasia 73318579Sfenner_strfile= games/fortune/strfile 73418579Sfenner.endif 73518579Sfenner.if !defined(NOPERL) 73618579Sfenner_perl= gnu/usr.bin/perl/miniperl 73718579Sfenner.endif 73818579Sfenner.if !defined(NOSHARE) && exists(${.CURDIR}/share) 73918579Sfenner_scrnmaps= share/syscons/scrnmaps 74018579Sfenner.endif 74118579Sfenner.if ${MACHINE_ARCH} == i386 74218579Sfenner_kldlinux= sys/modules/linux 74318579Sfenner.endif 74418579Sfenner.if ${OBJFORMAT} == "aout" 74518579Sfenner_netboot= sys/${MACHINE}/boot/netboot 74618579Sfenner.endif 74718579Sfenner 74818579SfennerBTMAKEFLAGS= ${MK_FLAGS} -D_BUILD_TOOLS 74918579Sfenner 75018579Sfenner# 75118579Sfenner# build-tools - build and install any other tools needed to complete the 752100787Sfenner# compile and install. 75318579Sfenner# ifdef stale 75418579Sfenner# bc and cpp are required to build groff. Otherwise, the order here is 75518583Sfenner# mostly historical, i.e., bogus. 75618579Sfenner# chmod is used to build gcc's tmpmultilib[2] at obscure times. 75718579Sfenner# endif stale 75818579Sfenner# XXX uname is a bug - the target should not depend on the host. 75918583Sfenner# 76018583Sfennerbuild-tools: 76118579Sfenner.for d in \ 76218579Sfenner bin/cat \ 76318579Sfenner bin/chmod \ 76418579Sfenner bin/cp \ 76518579Sfenner bin/date \ 76618579Sfenner bin/dd \ 76718579Sfenner bin/echo \ 76818579Sfenner bin/expr \ 76918579Sfenner bin/hostname \ 77018579Sfenner bin/ln \ 77158804Sshin bin/ls \ 77258804Sshin bin/mkdir \ 77366809Skris bin/mv \ 77458804Sshin bin/rm \ 77558804Sshin bin/test \ 77666809Skris ${_caesar} \ 77758804Sshin ${_strfile} \ 77858804Sshin gnu/usr.bin/awk \ 77918583Sfenner gnu/usr.bin/bc \ 78018583Sfenner gnu/usr.bin/grep \ 78118579Sfenner gnu/usr.bin/groff \ 78218579Sfenner gnu/usr.bin/gzip \ 78318579Sfenner gnu/usr.bin/man/makewhatis \ 78418579Sfenner gnu/usr.bin/patch \ 78518579Sfenner ${_perl} \ 78618579Sfenner gnu/usr.bin/sort \ 78718579Sfenner gnu/usr.bin/texinfo \ 78818579Sfenner usr.bin/basename \ 78918579Sfenner usr.bin/cap_mkdb \ 79018579Sfenner usr.bin/chflags \ 79118579Sfenner usr.bin/cmp \ 79218579Sfenner usr.bin/col \ 79318579Sfenner usr.bin/colldef \ 79418579Sfenner usr.bin/cpp \ 79518579Sfenner usr.bin/expand \ 79618579Sfenner usr.bin/file2c \ 79718579Sfenner usr.bin/find \ 79818579Sfenner usr.bin/gencat \ 79918579Sfenner usr.bin/gensetdefs \ 80018579Sfenner usr.bin/id \ 80118579Sfenner usr.bin/join \ 80218579Sfenner usr.bin/lorder \ 80318579Sfenner usr.bin/m4 \ 80418579Sfenner usr.bin/mkdep \ 80518579Sfenner usr.bin/mklocale \ 80618579Sfenner usr.bin/paste \ 80718579Sfenner usr.bin/printf \ 80818579Sfenner usr.bin/sed \ 809100787Sfenner ${_aout_size} \ 810100787Sfenner usr.bin/soelim \ 81118579Sfenner usr.bin/symorder \ 81218579Sfenner usr.bin/touch \ 81318579Sfenner usr.bin/tr \ 81418579Sfenner usr.bin/true \ 81518579Sfenner usr.bin/uname \ 81618579Sfenner usr.bin/uuencode \ 81718579Sfenner usr.bin/vgrind \ 81818579Sfenner usr.bin/vi \ 81918579Sfenner usr.bin/wc \ 82018579Sfenner usr.bin/xargs \ 82118579Sfenner usr.bin/yacc \ 82218579Sfenner ${_btxld} \ 82318579Sfenner usr.sbin/chown \ 82418579Sfenner usr.sbin/mtree \ 82518579Sfenner usr.sbin/zic \ 82618579Sfenner bin/sh 82718579Sfenner cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} ${_DEPEND}; \ 82818579Sfenner ${MAKE} ${BTMAKEFLAGS} all; \ 82918579Sfenner ${MAKE} ${BTMAKEFLAGS} -B install ${CLEANDIR} ${OBJDIR} 83018579Sfenner.endfor 831100787Sfenner.if !defined(NOGAMES) && exists(${.CURDIR}/games) 832100787Sfenner cd ${DESTDIR}/usr/games; cp -p caesar strfile ${DESTDIR}/usr/bin 833100787Sfenner.endif 834100787Sfenner.for d in \ 835100787Sfenner bin/sh \ 836100787Sfenner ${_adventure} \ 837100787Sfenner ${_hack} \ 838100787Sfenner ${_phantasia} \ 83918579Sfenner gnu/usr.bin/cc/cc_tools \ 840100787Sfenner lib/libmytinfo \ 84118579Sfenner ${_linux} \ 84218579Sfenner ${_kldlinux} \ 84318579Sfenner ${_scrnmaps} \ 84418579Sfenner ${_netboot} 84518579Sfenner cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} build-tools 84618579Sfenner.endfor 84718579Sfenner cd ${.CURDIR}/usr.bin/tn3270/tools; ${MAKE} ${BTMAKEFLAGS} all 848100787Sfenner 849100787Sfenner# 850100787Sfenner# Build aout versions of things that provide legacy support when all the 851100787Sfenner# rest of the world is elf. 852100787Sfenner# 853100787Sfennerlegacy-build: 854100787Sfenner.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" 855100787Sfenner @echo 856100787Sfenner @echo "--------------------------------------------------------------" 857100787Sfenner @echo ">>> Making hierarchy" 858100787Sfenner @echo "--------------------------------------------------------------" 859100787Sfenner mkdir -p ${WORLDTMP} 860100787Sfenner cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 hierarchy 861100787Sfenner @echo 862100787Sfenner @echo "--------------------------------------------------------------" 863100787Sfenner @echo ">>> Rebuilding the ${OBJFORMAT} obj tree" 864100787Sfenner @echo "--------------------------------------------------------------" 865100787Sfenner cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-${OBJDIR} 866100787Sfenner @echo 867100787Sfenner @echo "--------------------------------------------------------------" 868100787Sfenner @echo ">>> Rebuilding ${DESTDIR}/usr/include" 86918579Sfenner @echo "--------------------------------------------------------------" 87018579Sfenner cd ${.CURDIR}; SHARED=copies ${XMAKE} -f Makefile.inc1 includes 87118579Sfenner @echo 872100787Sfenner @echo "--------------------------------------------------------------" 873100787Sfenner @echo ">>> Building legacy libraries" 874100787Sfenner @echo "--------------------------------------------------------------" 875100787Sfenner cd ${.CURDIR}; \ 876100787Sfenner ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 bootstrap-libraries 877100787Sfenner cd ${.CURDIR}; \ 878100787Sfenner ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries 879100787Sfenner @echo 880100787Sfenner @echo "--------------------------------------------------------------" 881100787Sfenner @echo ">>> Building legacy rtld" 882100787Sfenner @echo "--------------------------------------------------------------" 883100787Sfenner cd ${.CURDIR}/libexec/rtld-aout; \ 884100787Sfenner ${XMAKE} -DNOMAN depend; ${XMAKE} -DNOMAN all; 885100787Sfenner @echo 886100787Sfenner @echo "--------------------------------------------------------------" 887100787Sfenner @echo ">>> Building legacy boot" 888100787Sfenner @echo "--------------------------------------------------------------" 889100787Sfenner cd ${.CURDIR}/sys/${MACHINE}/boot && \ 890100787Sfenner ${XMAKE} -DNOMAN -B obj depend; ${XMAKE} -DNOMAN all; 891100787Sfenner.endif 892100787Sfenner 893100787Sfenner# 894100787Sfenner# Install aout versions of things that provide legacy support when all the 895100787Sfenner# rest of the world is elf. 896100787Sfenner# 897100787Sfennerlegacy-install: 898100787Sfenner.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" 899100787Sfenner @echo 900100787Sfenner @echo "--------------------------------------------------------------" 901100787Sfenner @echo ">>> Installing legacy libraries" 902100787Sfenner @echo "--------------------------------------------------------------" 903100787Sfenner cd ${.CURDIR}/lib; ${MAKE} -B -DNOMAN -DNOINFO install 904100787Sfenner cd ${.CURDIR}/gnu/lib; ${MAKE} -B -DNOMAN -DNOINFO install 905100787Sfenner cd ${.CURDIR}/gnu/lib/libgcc; \ 906100787Sfenner ${MAKE} -B -DNOMAN -DNOINFO install 907100787Sfenner cd ${.CURDIR}/usr.bin/lex/lib; \ 908100787Sfenner ${MAKE} -B -DNOMAN -DNOINFO install 909100787Sfenner cd ${.CURDIR}/usr.sbin/pcvt/keycap; \ 910100787Sfenner ${MAKE} -B -DNOMAN -DNOINFO install 911100787Sfenner.if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE) 912100787Sfenner cd ${.CURDIR}/secure/lib; ${MAKE} -B -DNOMAN -DNOINFO install 913100787Sfenner.endif 914100787Sfenner.if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \ 915100787Sfenner defined(MAKE_KERBEROS4) 916100787Sfenner cd ${.CURDIR}/kerberosIV/lib; ${MAKE} -B -DNOMAN -DNOINFO install 917128365Spb.endif 918128365Spb @echo 919100787Sfenner @echo "--------------------------------------------------------------" 920100787Sfenner @echo ">>> Installing legacy rtld" 921100787Sfenner @echo "--------------------------------------------------------------" 922100787Sfenner cd ${.CURDIR}/libexec/rtld-aout; ${MAKE} -DNOMAN install 923100787Sfenner @echo 924100787Sfenner.if ${MACHINE_ARCH} == "i386" 925176428Srpaulo @echo "--------------------------------------------------------------" 926176428Srpaulo @echo ">>> Installing legacy boot" 927176428Srpaulo @echo "--------------------------------------------------------------" 928176428Srpaulo cd ${.CURDIR}/sys/${MACHINE}/boot && ${MAKE} -DNOMAN install 929176428Srpaulo.endif 930176428Srpaulo.endif 931176428Srpaulo 932176428Srpaulo 933176428Srpaulo# Get the object format that the tools see. 934176428Srpaulo# 93558804Sshin# 93658804Sshin.if exists(/usr/bin/objformat) 93766809Skris__OBJFORMAT!= objformat 93858804Sshin.else 93958804Sshin__OBJFORMAT= ${OBJFORMAT} 94066809Skris.endif 94158804Sshin 94258804Sshin# 94318579Sfenner# Check if the local /etc/make.conf or /etc/make.conf.local have attempted 94418579Sfenner# to override the OBJFORMAT without updating the environment for the tools 94518579Sfenner# to see. 94618579Sfenner# 94718579Sfennercheck-objformat : 94818579Sfenner.if ${__OBJFORMAT} != ${OBJFORMAT} 94918579Sfenner @/bin/sh -c "echo \"It looks like you set OBJFORMAT=${OBJFORMAT} in /etc/make.conf. Don't do that!\" " 950100787Sfenner @/bin/sh -c "echo \"If you want to override the installed object format, you must set OBJFORMAT\" " 95118579Sfenner @/bin/sh -c "echo \"in your environment.\" " 952100787Sfenner @exit 1 95318579Sfenner.endif 95418579Sfenner.if !defined(REALLY_WANT_DEPRECIATED_AOUT) && ${OBJFORMAT} == "aout" 955100787Sfenner @echo "==== NOTICE: a.out buildworld is depreciated and disabled! =====" 95618695Ssef @echo "Read: http://www.freebsd.org/~peter/elfday.html for information." 95718579Sfenner @echo "You need to complete a 'make aout-to-elf' to bring your system" 95818579Sfenner @echo "up to date with ELF tools. This requires a fair amount of disk" 95918695Ssef @echo "space to complete. Alternatively, you can do a binary upgrade" 96018579Sfenner @echo "using the 3.0-RELEASE binaries from CD or ftp.freebsd.org in" 96118579Sfenner @echo "/pub/FreeBSD/3.0-RELEASE/bin/ to convert your userland to ELF." 96218579Sfenner @exit 1 96346542Sarchie.endif 96418579Sfenner 965100787Sfenner 966100787Sfenner.for __target in clean cleandepend cleandir depend obj 96746542Sarchie.for entry in ${SUBDIR} 96846542Sarchie${entry}.${__target}__D: .PHONY 96946542Sarchie @if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 97046542Sarchie ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH}"; \ 97146542Sarchie edir=${entry}.${MACHINE_ARCH}; \ 972211062Sed cd ${.CURDIR}/$${edir}; \ 97346542Sarchie else \ 97446542Sarchie ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ 97546542Sarchie edir=${entry}; \ 97646542Sarchie cd ${.CURDIR}/$${edir}; \ 97746542Sarchie fi; \ 978100787Sfenner ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 97946542Sarchie.endfor 98046542Sarchiepar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 981100787Sfenner.endfor 98218583Sfenner 98318583Sfenner.include <bsd.subdir.mk> 98418583Sfenner