Makefile revision 33611
12061Sjkh# 233611Sjb# $Id: Makefile,v 1.158 1998/02/19 00:24:43 nate Exp $ 32061Sjkh# 433611Sjb# While porting to the another architecture include the bootstrap instead 532427Sjb# of the normal build. 632427Sjb# 733611Sjb.if exists(${.CURDIR}/Makefile.${MACHINE}) 833611Sjb.include "${.CURDIR}/Makefile.${MACHINE}" 932427Sjb.else 1032427Sjb# 112061Sjkh# Make command line options: 1215603Smarkm# -DCLOBBER will remove /usr/include 1330169Sjkh# -DMAKE_KERBEROS4 to build KerberosIV 1420710Sasami# -DALLLANG to build documentation for all languages 1520710Sasami# (where available -- see share/doc/Makefile) 163197Scsgr# 172061Sjkh# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 1812483Speter# -DNOCLEAN do not clean at all 1933133Sadam# -DNOTOOLS do not rebuild any tools first 202160Scsgr# -DNOCRYPT will prevent building of crypt versions 212834Swollman# -DNOLKM do not build loadable kernel modules 222061Sjkh# -DNOOBJDIR do not run ``${MAKE} obj'' 232061Sjkh# -DNOPROFILE do not build profiled libraries 242160Scsgr# -DNOSECURE do not go into secure subdir 2517308Speter# -DNOGAMES do not go into games subdir 2619320Sadam# -DNOSHARE do not go into share subdir 2727788Sasami# -DNOINFO do not make or install info files 2830169Sjkh# -DNOLIBC_R do not build libc_r. 2925980Sasami# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 301594Srgrimes 3117308Speter# 3217308Speter# The intended user-driven targets are: 3327910Sasami# buildworld - rebuild *everything*, including glue to help do upgrades 3427910Sasami# installworld- install everything built by "buildworld" 3527910Sasami# world - buildworld + installworld 3617308Speter# update - convenient way to update your source tree (eg: sup/cvs) 3717308Speter# most - build user commands, no libraries or include files 3817308Speter# installmost - install user commands, no libraries or include files 3919175Sbde# 4019175Sbde# Standard targets (not defined here) are documented in the makefiles in 4119175Sbde# /usr/share/mk. These include: 4219175Sbde# obj depend all install clean cleandepend cleanobj 4317308Speter 4427910Sasami.if (!make(world)) && (!make(buildworld)) && (!make(installworld)) 4525647Sbde.MAKEFLAGS:= ${.MAKEFLAGS} -m ${.CURDIR}/share/mk 4627910Sasami.endif 4717308Speter 482061Sjkh# Put initial settings here. 492061SjkhSUBDIR= 501594Srgrimes 5130169Sjkh# We must do share/info early so that installation of info `dir' 5230169Sjkh# entries works correctly. Do it first since it is less likely to 5330169Sjkh# grow dependencies on include and lib than vice versa. 5430169Sjkh.if exists(share/info) 5530169SjkhSUBDIR+= share/info 5630169Sjkh.endif 5730169Sjkh 5830169Sjkh# We must do include and lib early so that the perl *.ph generation 597407Srgrimes# works correctly as it uses the header files installed by this. 607108Sphk.if exists(include) 617108SphkSUBDIR+= include 627108Sphk.endif 637407Srgrimes.if exists(lib) 647407SrgrimesSUBDIR+= lib 657407Srgrimes.endif 667108Sphk 672061Sjkh.if exists(bin) 682061SjkhSUBDIR+= bin 692061Sjkh.endif 7017308Speter.if exists(games) && !defined(NOGAMES) 712061SjkhSUBDIR+= games 722061Sjkh.endif 732061Sjkh.if exists(gnu) 742061SjkhSUBDIR+= gnu 752061Sjkh.endif 7630169Sjkh.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 7730169SjkhSUBDIR+= kerberosIV 782626Scsgr.endif 792061Sjkh.if exists(libexec) 802061SjkhSUBDIR+= libexec 812061Sjkh.endif 822061Sjkh.if exists(sbin) 832061SjkhSUBDIR+= sbin 842061Sjkh.endif 8519320Sadam.if exists(share) && !defined(NOSHARE) 862061SjkhSUBDIR+= share 872061Sjkh.endif 882061Sjkh.if exists(sys) 892061SjkhSUBDIR+= sys 902061Sjkh.endif 912061Sjkh.if exists(usr.bin) 922061SjkhSUBDIR+= usr.bin 932061Sjkh.endif 942061Sjkh.if exists(usr.sbin) 952061SjkhSUBDIR+= usr.sbin 962061Sjkh.endif 972834Swollman.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE) 982834SwollmanSUBDIR+= secure 992834Swollman.endif 1002834Swollman.if exists(lkm) && !defined(NOLKM) 1012834SwollmanSUBDIR+= lkm 1022834Swollman.endif 1031594Srgrimes 1044486Sphk# etc must be last for "distribute" to work 1054486Sphk.if exists(etc) && make(distribute) 1064486SphkSUBDIR+= etc 1074486Sphk.endif 1084486Sphk 1092061Sjkh# These are last, since it is nice to at least get the base system 1102061Sjkh# rebuilt before you do them. 11125979Sjkh.if defined(LOCAL_DIRS) 11225979Sjkh.for _DIR in ${LOCAL_DIRS} 11325979Sjkh.if exists(${_DIR}) & exists(${_DIR}/Makefile) 11425979SjkhSUBDIR+= ${_DIR} 1152061Sjkh.endif 11625979Sjkh.endfor 1172061Sjkh.endif 1182061Sjkh 11917308Speter# Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR 1202061Sjkh.if defined(NOOBJDIR) 1212061SjkhOBJDIR= 1222061Sjkh.else 1232061SjkhOBJDIR= obj 1242061Sjkh.endif 12512483Speter 12612483Speter.if defined(NOCLEAN) 12712483SpeterCLEANDIR= 12812483Speter.else 1292061Sjkh.if defined(NOCLEANDIR) 1302061SjkhCLEANDIR= clean 1318854Srgrimes.else 1322061SjkhCLEANDIR= cleandir 1332061Sjkh.endif 13412483Speter.endif 1352061Sjkh 13627910SasamiSUP?= sup 13727910SasamiSUPFLAGS?= -v 13818714Sache 13917308Speter# 14017308Speter# While building tools for bootstrapping, we dont need to waste time on 14117308Speter# profiled libraries or man pages. This speeds things up somewhat. 14217308Speter# 14321536SjmacdMK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE 14415603Smarkm 14517308Speter# 14617308Speter# world 14717308Speter# 14817308Speter# Attempt to rebuild and reinstall *everything*, with reasonable chance of 14917308Speter# success, regardless of how old your existing system is. 15017308Speter# 15117308Speter# >> Beware, it overwrites the local build environment! << 15217308Speter# 15317308Speterworld: 15418362Sjkh @echo "--------------------------------------------------------------" 15519966Sache @echo "make world started on `LC_TIME=C date`" 15618362Sjkh @echo "--------------------------------------------------------------" 15717308Speter.if target(pre-world) 15827910Sasami @echo 15917308Speter @echo "--------------------------------------------------------------" 16017308Speter @echo " Making 'pre-world' target" 16117308Speter @echo "--------------------------------------------------------------" 16228803Speter cd ${.CURDIR} && ${MAKE} pre-world 16327910Sasami.endif 16428803Speter cd ${.CURDIR} && ${MAKE} buildworld 16530113Sjkh cd ${.CURDIR} && ${MAKE} -B installworld 16627910Sasami.if target(post-world) 16717308Speter @echo 1682061Sjkh @echo "--------------------------------------------------------------" 16927910Sasami @echo " Making 'post-world' target" 1702061Sjkh @echo "--------------------------------------------------------------" 17128803Speter cd ${.CURDIR} && ${MAKE} post-world 17227910Sasami.endif 1732061Sjkh @echo 17417308Speter @echo "--------------------------------------------------------------" 17527910Sasami @echo "make world completed on `LC_TIME=C date`" 17617308Speter @echo "--------------------------------------------------------------" 17727910Sasami 17827910Sasami.if defined(MAKEOBJDIRPREFIX) 17927910SasamiWORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp 18017308Speter.else 18127910SasamiWORLDTMP= /usr/obj${.CURDIR}/tmp 18217308Speter.endif 18327910SasamiSTRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin 18427910SasamiTMPPATH= ${STRICTTMPPATH}:${PATH} 18527910Sasami 18627910Sasami# XXX COMPILER_PATH is needed for finding cc1, ld and as 18727910Sasami# XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecssary now 18827910Sasami# tbat LIBRARY_PATH is set. We still can't use -nostdlib, since gcc 18927910Sasami# wouldn't link *crt.o or libgcc if it were used. 19027910Sasami# XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't 19127910Sasami# want that - all compile-time library paths should be resolved by gcc. 19227910Sasami# It fails for set[ug]id executables (are any used?). 19327910SasamiCOMPILER_ENV= BISON_SIMPLE=${WORLDTMP}/usr/share/misc/bison.simple \ 19427910Sasami COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \ 19527910Sasami GCC_EXEC_PREFIX=${WORLDTMP}/usr/lib/ \ 19627910Sasami LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \ 19727910Sasami LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib 19827910Sasami 19927910SasamiBMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t 20027910SasamiXMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \ 20127910Sasami CC='cc -nostdinc' # XXX -nostdlib 20227910Sasami 20327910Sasami# used to compile and install 'make' in temporary build tree 20427910SasamiIBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 20527910Sasami# bootstrap make 20627910SasamiBMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP} 20727910Sasami# cross make used for compilation 20827910SasamiXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} DESTDIR=${WORLDTMP} 20927910Sasami# cross make used for final installation 21027910SasamiIXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/${MAKE} 21127910Sasami 21227910Sasami# 21327910Sasami# buildworld 21427910Sasami# 21527910Sasami# Attempt to rebuild the entire system, with reasonable chance of 21627910Sasami# success, regardless of how old your existing system is. 21727910Sasami# 21827910Sasamibuildworld: 21927910Sasami.if !defined(NOCLEAN) 22017308Speter @echo 22117308Speter @echo "--------------------------------------------------------------" 22227910Sasami @echo " Cleaning up the temporary build tree" 22317308Speter @echo "--------------------------------------------------------------" 22427910Sasami mkdir -p ${WORLDTMP} 22527910Sasami chflags -R noschg ${WORLDTMP}/ 22627910Sasami rm -rf ${WORLDTMP} 22727910Sasami.endif 22833133Sadam.if !defined(NOTOOLS) 22917466Speter @echo 23017308Speter @echo "--------------------------------------------------------------" 23127910Sasami @echo " Making make" 23217308Speter @echo "--------------------------------------------------------------" 23327910Sasami mkdir -p ${WORLDTMP}/usr/bin 23430277Sasami.if !defined(NOCLEAN) || !defined(NOOBJDIR) 23527910Sasami cd ${.CURDIR}/usr.bin/make && \ 23630277Sasami ${IBMAKE} -I${.CURDIR}/share/mk ${CLEANDIR} ${OBJDIR} 23730277Sasami.endif 23830277Sasami cd ${.CURDIR}/usr.bin/make && \ 23930277Sasami ${IBMAKE} -I${.CURDIR}/share/mk depend && \ 24030113Sjkh ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \ 24130277Sasami ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install && \ 24230277Sasami ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean cleandepend 24333133Sadam.endif 24417308Speter @echo 24517308Speter @echo "--------------------------------------------------------------" 24627910Sasami @echo " Making hierarchy" 24717308Speter @echo "--------------------------------------------------------------" 24827910Sasami cd ${.CURDIR} && ${BMAKE} hierarchy 24927910Sasami.if !defined(NOCLEAN) 25017308Speter @echo 25117308Speter @echo "--------------------------------------------------------------" 25227910Sasami @echo " Cleaning up the obj tree" 25317308Speter @echo "--------------------------------------------------------------" 25430113Sjkh cd ${.CURDIR} && ${BMAKE} par-${CLEANDIR} 25527910Sasami.endif 25627910Sasami.if !defined(NOOBJDIR) 25717308Speter @echo 25817308Speter @echo "--------------------------------------------------------------" 25927910Sasami @echo " Rebuilding the obj tree" 26017308Speter @echo "--------------------------------------------------------------" 26130113Sjkh cd ${.CURDIR} && ${BMAKE} par-obj 26227910Sasami.endif 26333133Sadam.if !defined(NOTOOLS) 26417308Speter @echo 26517308Speter @echo "--------------------------------------------------------------" 26627910Sasami @echo " Rebuilding bootstrap tools" 26717308Speter @echo "--------------------------------------------------------------" 26827910Sasami cd ${.CURDIR} && ${BMAKE} bootstrap 26917308Speter @echo 27017308Speter @echo "--------------------------------------------------------------" 27127910Sasami @echo " Rebuilding tools necessary to build the include files" 27217308Speter @echo "--------------------------------------------------------------" 27327910Sasami cd ${.CURDIR} && ${BMAKE} include-tools 27433133Sadam.endif 27517308Speter @echo 27617308Speter @echo "--------------------------------------------------------------" 27727910Sasami @echo " Rebuilding /usr/include" 27817308Speter @echo "--------------------------------------------------------------" 27929503Sbde cd ${.CURDIR} && SHARED=symlinks ${BMAKE} includes 28033133Sadam.if !defined(NOTOOLS) 28117962Speter @echo 28217962Speter @echo "--------------------------------------------------------------" 28327910Sasami @echo " Rebuilding tools needed to build the libraries" 28417962Speter @echo "--------------------------------------------------------------" 28527910Sasami cd ${.CURDIR} && ${BMAKE} lib-tools 28633133Sadam.endif 28717962Speter @echo 28817962Speter @echo "--------------------------------------------------------------" 28927910Sasami @echo " Rebuilding /usr/lib" 29017962Speter @echo "--------------------------------------------------------------" 29127910Sasami cd ${.CURDIR} && ${BMAKE} libraries 29233133Sadam.if !defined(NOTOOLS) 29317962Speter @echo 29417962Speter @echo "--------------------------------------------------------------" 29527910Sasami @echo " Rebuilding all other tools needed to build the world" 29617962Speter @echo "--------------------------------------------------------------" 29727910Sasami cd ${.CURDIR} && ${BMAKE} build-tools 29833133Sadam.endif 29917308Speter @echo 30017308Speter @echo "--------------------------------------------------------------" 30127910Sasami @echo " Rebuilding dependencies" 30217308Speter @echo "--------------------------------------------------------------" 30330205Sbde cd ${.CURDIR} && ${XMAKE} par-depend 30417308Speter @echo 30517308Speter @echo "--------------------------------------------------------------" 30627910Sasami @echo " Building everything.." 30717962Speter @echo "--------------------------------------------------------------" 30827910Sasami cd ${.CURDIR} && ${XMAKE} all 3092061Sjkh 31017308Speter# 31127910Sasami# installworld 31227910Sasami# 31327910Sasami# Installs everything compiled by a 'buildworld'. 31427910Sasami# 31527910Sasamiinstallworld: 31627910Sasami cd ${.CURDIR} && ${IXMAKE} reinstall 31727910Sasami 31827910Sasami# 31917308Speter# reinstall 32017308Speter# 32117308Speter# If you have a build server, you can NFS mount the source and obj directories 32217308Speter# and do a 'make reinstall' on the *client* to install new binaries from the 32317308Speter# most recent server build. 32417308Speter# 32517308Speterreinstall: 32612483Speter @echo "--------------------------------------------------------------" 32717308Speter @echo " Making hierarchy" 32812483Speter @echo "--------------------------------------------------------------" 32917308Speter cd ${.CURDIR} && ${MAKE} hierarchy 33012483Speter @echo 3312061Sjkh @echo "--------------------------------------------------------------" 33217962Speter @echo " Installing everything.." 33317962Speter @echo "--------------------------------------------------------------" 33417308Speter cd ${.CURDIR} && ${MAKE} install 33517962Speter @echo 33617962Speter @echo "--------------------------------------------------------------" 33733595Snate @echo " Re-scanning the shared libraries.." 33833595Snate @echo "--------------------------------------------------------------" 33933595Snate cd ${.CURDIR} && ldconfig -R 34033595Snate @echo 34133595Snate @echo "--------------------------------------------------------------" 34217962Speter @echo " Rebuilding man page indexes" 34317962Speter @echo "--------------------------------------------------------------" 34417308Speter cd ${.CURDIR}/share/man && ${MAKE} makedb 3452061Sjkh 34617308Speter# 34717308Speter# update 34817308Speter# 34917308Speter# Update the source tree, by running sup and/or running cvs to update to the 35017308Speter# latest copy. 35117308Speter# 3522302Spaulupdate: 3532302Spaul.if defined(SUP_UPDATE) 3542302Spaul @echo "--------------------------------------------------------------" 3552302Spaul @echo "Running sup" 3562302Spaul @echo "--------------------------------------------------------------" 35718714Sache @${SUP} ${SUPFLAGS} ${SUPFILE} 35810760Sache.if defined(SUPFILE1) 35918714Sache @${SUP} ${SUPFLAGS} ${SUPFILE1} 3602302Spaul.endif 36110760Sache.if defined(SUPFILE2) 36218714Sache @${SUP} ${SUPFLAGS} ${SUPFILE2} 36310760Sache.endif 36410760Sache.endif 3652302Spaul.if defined(CVS_UPDATE) 3662302Spaul @echo "--------------------------------------------------------------" 3672302Spaul @echo "Updating /usr/src from cvs repository" ${CVSROOT} 3682302Spaul @echo "--------------------------------------------------------------" 36930132Sfsmp cd ${.CURDIR} && cvs -q update -P -d 3702302Spaul.endif 3712302Spaul 37217308Speter# 37317308Speter# most 37417308Speter# 37517308Speter# Build most of the user binaries on the existing system libs and includes. 37617308Speter# 37717308Spetermost: 3782061Sjkh @echo "--------------------------------------------------------------" 37917308Speter @echo " Building programs only" 3802061Sjkh @echo "--------------------------------------------------------------" 38130205Sbde cd ${.CURDIR}/bin && ${MAKE} all 38230205Sbde cd ${.CURDIR}/sbin && ${MAKE} all 38330205Sbde cd ${.CURDIR}/libexec && ${MAKE} all 38430205Sbde cd ${.CURDIR}/usr.bin && ${MAKE} all 38530205Sbde cd ${.CURDIR}/usr.sbin && ${MAKE} all 38630205Sbde cd ${.CURDIR}/gnu/libexec && ${MAKE} all 38730205Sbde cd ${.CURDIR}/gnu/usr.bin && ${MAKE} all 38830205Sbde cd ${.CURDIR}/gnu/usr.sbin && ${MAKE} all 38930169Sjkh#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 39030205Sbde# cd ${.CURDIR}/kerberosIV && ${MAKE} most 39117308Speter#.endif 39217308Speter#.if !defined(NOSECURE) && !defined(NOCRYPT) 39330205Sbde# cd ${.CURDIR}/secure && ${MAKE} most 39417308Speter#.endif 3952061Sjkh 39617308Speter# 39717308Speter# installmost 39817308Speter# 39917308Speter# Install the binaries built by the 'most' target. This does not include 40017308Speter# libraries or include files. 40117308Speter# 4023626Swollmaninstallmost: 4033626Swollman @echo "--------------------------------------------------------------" 4043626Swollman @echo " Installing programs only" 4053626Swollman @echo "--------------------------------------------------------------" 40630205Sbde cd ${.CURDIR}/bin && ${MAKE} install 40730205Sbde cd ${.CURDIR}/sbin && ${MAKE} install 40830205Sbde cd ${.CURDIR}/libexec && ${MAKE} install 40930205Sbde cd ${.CURDIR}/usr.bin && ${MAKE} install 41030205Sbde cd ${.CURDIR}/usr.sbin && ${MAKE} install 41130205Sbde cd ${.CURDIR}/gnu/libexec && ${MAKE} install 41230205Sbde cd ${.CURDIR}/gnu/usr.bin && ${MAKE} install 41330205Sbde cd ${.CURDIR}/gnu/usr.sbin && ${MAKE} install 41430169Sjkh#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 41530205Sbde# cd ${.CURDIR}/kerberosIV && ${MAKE} installmost 4163626Swollman#.endif 4173626Swollman#.if !defined(NOSECURE) && !defined(NOCRYPT) 41830205Sbde# cd ${.CURDIR}/secure && ${MAKE} installmost 4193626Swollman#.endif 4203626Swollman 42117308Speter# 42217308Speter# ------------------------------------------------------------------------ 42317308Speter# 42417308Speter# From here onwards are utility targets used by the 'make world' and 42517308Speter# related targets. If your 'world' breaks, you may like to try to fix 42617308Speter# the problem and manually run the following targets to attempt to 42717308Speter# complete the build. Beware, this is *not* guaranteed to work, you 42817308Speter# need to have a pretty good grip on the current state of the system 42917308Speter# to attempt to manually finish it. If in doubt, 'make world' again. 43017308Speter# 4313626Swollman 43217308Speter# 43317308Speter# heirarchy - ensure that all the needed directories are present 43417308Speter# 43517308Speterhierarchy: 43617308Speter cd ${.CURDIR}/etc && ${MAKE} distrib-dirs 43717308Speter 43817308Speter# 43917308Speter# bootstrap - [re]build tools needed to run the actual build, this includes 44017308Speter# tools needed by 'make depend', as some tools are needed to generate source 44117308Speter# for the dependency information to be gathered from. 44217308Speter# 44317308Speterbootstrap: 44427910Sasami.if defined(DESTDIR) 44527910Sasami rm -f ${DESTDIR}/usr/src/sys 44627910Sasami ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src 44727910Sasami cd ${.CURDIR}/include && find -dx . | cpio -dump ${DESTDIR}/usr/include 44827910Sasami cd ${.CURDIR}/include && make symlinks 44927910Sasami.endif 45017820Sjkh cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \ 45130113Sjkh ${MAKE} ${MK_FLAGS} all && \ 45230113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 45317820Sjkh cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} depend && \ 45430113Sjkh ${MAKE} ${MK_FLAGS} all && \ 45530113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 45617820Sjkh cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} depend && \ 45730170Sjkh ${MAKE} ${MK_FLAGS} -DNOLIB all && \ 45830113Sjkh ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} 45929938Smckay.if !defined(NOOBJDIR) 46029938Smckay cd ${.CURDIR}/usr.bin/lex && ${MAKE} obj 46129938Smckay.endif 46217308Speter 46317308Speter# 46417308Speter# include-tools - generally the same as 'bootstrap', except that it's for 46517308Speter# things that are specifically needed to generate include files. 46617308Speter# 46727910Sasami# XXX should be merged with bootstrap, it's not worth keeeping them separate. 46827910Sasami# Well, maybe it is now. We force 'cleandepend' here to avoid dependencies 46927910Sasami# on cleaned away headers in ${WORLDTMP}. 47017308Speter# 47117308Speterinclude-tools: 47230113Sjkh cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \ 47330113Sjkh ${MAKE} ${MK_FLAGS} all && \ 47430113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 47517308Speter 47617308Speter# 47717308Speter# includes - possibly generate and install the include files. 47817308Speter# 47914119Speterincludes: 4802061Sjkh.if defined(CLOBBER) 4817130Srgrimes rm -rf ${DESTDIR}/usr/include/* 4827130Srgrimes mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 4837130Srgrimes -p ${DESTDIR}/usr/include 4842061Sjkh.endif 48530113Sjkh cd ${.CURDIR}/include && ${MAKE} -B all install 48617308Speter cd ${.CURDIR}/gnu/include && ${MAKE} install 48730169Sjkh cd ${.CURDIR}/gnu/lib/libmp && ${MAKE} beforeinstall 48830169Sjkh cd ${.CURDIR}/gnu/lib/libobjc && ${MAKE} beforeinstall 4892685Srgrimes cd ${.CURDIR}/gnu/lib/libreadline && ${MAKE} beforeinstall 4906927Snate cd ${.CURDIR}/gnu/lib/libregex && ${MAKE} beforeinstall 49127790Sasami cd ${.CURDIR}/gnu/lib/libstdc++ && ${MAKE} beforeinstall 49227790Sasami cd ${.CURDIR}/gnu/lib/libg++ && ${MAKE} beforeinstall 49327790Sasami cd ${.CURDIR}/gnu/lib/libdialog && ${MAKE} beforeinstall 49430169Sjkh cd ${.CURDIR}/gnu/lib/libgmp && ${MAKE} beforeinstall 49530169Sjkh.if exists(secure) && !defined(NOCRYPT) 49630169Sjkh cd ${.CURDIR}/secure/lib/libdes && ${MAKE} beforeinstall 4973197Scsgr.endif 49830169Sjkh.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 49930169Sjkh cd ${.CURDIR}/kerberosIV/lib/libacl && ${MAKE} beforeinstall 50030169Sjkh cd ${.CURDIR}/kerberosIV/lib/libkadm && ${MAKE} beforeinstall 50130169Sjkh cd ${.CURDIR}/kerberosIV/lib/libkafs && ${MAKE} beforeinstall 50230169Sjkh cd ${.CURDIR}/kerberosIV/lib/libkdb && ${MAKE} beforeinstall 50330169Sjkh cd ${.CURDIR}/kerberosIV/lib/libkrb && ${MAKE} beforeinstall 50430169Sjkh cd ${.CURDIR}/kerberosIV/lib/libtelnet && ${MAKE} beforeinstall 50530169Sjkh.else 50630169Sjkh cd ${.CURDIR}/lib/libtelnet && ${MAKE} beforeinstall 50730169Sjkh.endif 50832427Sjb.if exists(${.CURDIR}/lib/csu/${MACHINE}) 50932427Sjb cd ${.CURDIR}/lib/csu/${MACHINE} && ${MAKE} beforeinstall 51032427Sjb.endif 51126152Speter cd ${.CURDIR}/lib/libalias && ${MAKE} beforeinstall 5122061Sjkh cd ${.CURDIR}/lib/libc && ${MAKE} beforeinstall 5132061Sjkh cd ${.CURDIR}/lib/libcurses && ${MAKE} beforeinstall 51430169Sjkh cd ${.CURDIR}/lib/libdisk && ${MAKE} beforeinstall 5152061Sjkh cd ${.CURDIR}/lib/libedit && ${MAKE} beforeinstall 51616786Snate cd ${.CURDIR}/lib/libftpio && ${MAKE} beforeinstall 5172883Sphk cd ${.CURDIR}/lib/libmd && ${MAKE} beforeinstall 51827790Sasami cd ${.CURDIR}/lib/libmytinfo && ${MAKE} beforeinstall 51917308Speter cd ${.CURDIR}/lib/libncurses && ${MAKE} beforeinstall 5207281Srgrimes.if !defined(WANT_CSRG_LIBM) 5213242Spaul cd ${.CURDIR}/lib/msun && ${MAKE} beforeinstall 5223242Spaul.endif 52330169Sjkh cd ${.CURDIR}/lib/libopie && ${MAKE} beforeinstall 5247171Sats cd ${.CURDIR}/lib/libpcap && ${MAKE} beforeinstall 5252061Sjkh cd ${.CURDIR}/lib/librpcsvc && ${MAKE} beforeinstall 5263213Spst cd ${.CURDIR}/lib/libskey && ${MAKE} beforeinstall 52730169Sjkh.if !defined(NOTCL) && exists (${.CURDIR}/contrib/tcl) && \ 52830169Sjkh exists(${.CURDIR}/usr.bin/tclsh) && exists (${.CURDIR}/lib/libtcl) 52930169Sjkh cd ${.CURDIR}/lib/libtcl && ${MAKE} installhdrs 53030169Sjkh.endif 53117308Speter cd ${.CURDIR}/lib/libtermcap && ${MAKE} beforeinstall 5325749Swollman cd ${.CURDIR}/lib/libcom_err && ${MAKE} beforeinstall 5335772Swollman cd ${.CURDIR}/lib/libss && ${MAKE} beforeinstall 53417308Speter cd ${.CURDIR}/lib/libscsi && ${MAKE} beforeinstall 53517308Speter cd ${.CURDIR}/lib/libutil && ${MAKE} beforeinstall 53630169Sjkh cd ${.CURDIR}/lib/libvgl && ${MAKE} beforeinstall 53726504Sjhay cd ${.CURDIR}/lib/libz && ${MAKE} beforeinstall 53830169Sjkh cd ${.CURDIR}/usr.bin/f2c && ${MAKE} beforeinstall 53930169Sjkh cd ${.CURDIR}/usr.bin/lex && ${MAKE} beforeinstall 5402061Sjkh 54117308Speter# 54217308Speter# lib-tools - build tools to compile and install the libraries. 54317308Speter# 54427910Sasami# XXX gperf is required for cc 54527910Sasami# XXX a new ld and tsort is required for cc 5465366Snatelib-tools: 54727910Sasami.for d in \ 54827910Sasami gnu/usr.bin/gperf \ 54927910Sasami gnu/usr.bin/ld \ 55027910Sasami usr.bin/tsort \ 55127910Sasami gnu/usr.bin/as \ 55227910Sasami gnu/usr.bin/bison \ 55327910Sasami gnu/usr.bin/cc \ 55427910Sasami usr.bin/ar \ 55527910Sasami usr.bin/compile_et \ 55627910Sasami usr.bin/lex/lib \ 55727910Sasami usr.bin/mk_cmds \ 55827910Sasami usr.bin/nm \ 55927910Sasami usr.bin/ranlib \ 56027910Sasami usr.bin/uudecode 56127910Sasami cd ${.CURDIR}/$d && ${MAKE} depend && \ 56230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 56330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 56427910Sasami.endfor 5655366Snate 56617308Speter# 56717308Speter# libraries - build and install the libraries 56817308Speter# 5692061Sjkhlibraries: 57032427Sjb.if exists(lib/csu/${MACHINE}) 57132427Sjb cd ${.CURDIR}/lib/csu/${MACHINE} && ${MAKE} depend && \ 57230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 57330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 57424754Sjdp.endif 5758295Srgrimes.if exists(lib/libcompat) 57617820Sjkh cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \ 57730113Sjkh ${MAKE} ${MK_FLAGS} all && \ 57830113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5798295Srgrimes.endif 5808489Srgrimes.if exists(lib/libncurses) 58117820Sjkh cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \ 58230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 58330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5848489Srgrimes.endif 5858489Srgrimes.if exists(lib/libtermcap) 58617820Sjkh cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \ 58730113Sjkh ${MAKE} ${MK_FLAGS} all && \ 58830113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5898489Srgrimes.endif 5908295Srgrimes.if exists(gnu) 59117820Sjkh cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \ 59230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 59330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5948295Srgrimes.endif 5952160Scsgr.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE) 59617820Sjkh cd ${.CURDIR}/secure/lib && ${MAKE} depend && \ 59730113Sjkh ${MAKE} ${MK_FLAGS} all && \ 59830113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5992160Scsgr.endif 6002279Spaul.if exists(lib) 60117820Sjkh cd ${.CURDIR}/lib && ${MAKE} depend && \ 60230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 60330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 6042279Spaul.endif 60517234Sjraynard.if exists(usr.bin/lex/lib) 60617820Sjkh cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \ 60730113Sjkh ${MAKE} ${MK_FLAGS} all && \ 60830113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 60911772Snate.endif 61030170Sjkh.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 61130127Smarkm cd ${.CURDIR}/kerberosIV/lib && ${MAKE} depend && \ 61230113Sjkh ${MAKE} ${MK_FLAGS} all && \ 61330113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 6142626Scsgr.endif 6158304Srgrimes.if exists(usr.sbin/pcvt/keycap) 61617820Sjkh cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} depend && \ 61730113Sjkh ${MAKE} ${MK_FLAGS} all && \ 61830113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 6198304Srgrimes.endif 6202061Sjkh 62117308Speter# 62217308Speter# build-tools - build and install any other tools needed to complete the 62317308Speter# compile and install. 62427910Sasami# ifdef stale 62527910Sasami# bc and cpp are required to build groff. Otherwise, the order here is 62627910Sasami# mostly historical, i.e., bogus. 62727910Sasami# chmod is used to build gcc's tmpmultilib[2] at obscure times. 62827910Sasami# endif stale 62927910Sasami# XXX uname is a bug - the target should not depend on the host. 63017308Speter# 63111806Sphkbuild-tools: 63219175Sbde.for d in \ 63327910Sasami bin/cat \ 63427910Sasami bin/chmod \ 63527910Sasami bin/cp \ 63627910Sasami bin/date \ 63727910Sasami bin/dd \ 63827910Sasami bin/echo \ 63927910Sasami bin/expr \ 64027910Sasami bin/hostname \ 64127910Sasami bin/ln \ 64227910Sasami bin/ls \ 64327910Sasami bin/mkdir \ 64427910Sasami bin/mv \ 64527910Sasami bin/rm \ 64627910Sasami bin/sh \ 64727910Sasami bin/test \ 64827910Sasami gnu/usr.bin/awk \ 64927910Sasami gnu/usr.bin/bc \ 65027910Sasami gnu/usr.bin/grep \ 65127910Sasami gnu/usr.bin/groff \ 65227910Sasami gnu/usr.bin/gzip \ 65327910Sasami gnu/usr.bin/man/makewhatis \ 65427910Sasami gnu/usr.bin/sort \ 65527910Sasami gnu/usr.bin/texinfo \ 65621673Sjkh share/info \ 65727910Sasami usr.bin/basename \ 65827910Sasami usr.bin/cap_mkdb \ 65927910Sasami usr.bin/chflags \ 66027910Sasami usr.bin/cmp \ 66127910Sasami usr.bin/col \ 66227910Sasami usr.bin/cpp \ 66327910Sasami usr.bin/expand \ 66427910Sasami usr.bin/file2c \ 66527910Sasami usr.bin/find \ 66627910Sasami usr.bin/gencat \ 66727910Sasami usr.bin/lorder \ 66827910Sasami usr.bin/m4 \ 66927910Sasami usr.bin/mkdep \ 67027910Sasami usr.bin/paste \ 67127910Sasami usr.bin/sed \ 67227910Sasami usr.bin/size \ 67327910Sasami usr.bin/soelim \ 67427910Sasami usr.bin/strip \ 67519175Sbde usr.bin/symorder \ 67627910Sasami usr.bin/touch \ 67727910Sasami usr.bin/tr \ 67827910Sasami usr.bin/true \ 67927910Sasami usr.bin/uname \ 68027910Sasami usr.bin/uuencode \ 68127910Sasami usr.bin/vgrind \ 68227910Sasami usr.bin/vi \ 68327910Sasami usr.bin/wc \ 68427910Sasami usr.bin/yacc \ 68527910Sasami usr.sbin/chown \ 68627910Sasami usr.sbin/mtree \ 68727910Sasami usr.sbin/zic 68819175Sbde cd ${.CURDIR}/$d && ${MAKE} depend && \ 68930113Sjkh ${MAKE} ${MK_FLAGS} all && \ 69030113Sjkh ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 69119175Sbde.endfor 6922061Sjkh 69330113Sjkh.for __target in clean cleandir obj depend 69430113Sjkh.for entry in ${SUBDIR} 69530113Sjkh${entry}.${__target}__D: .PHONY 69630113Sjkh if test -d ${.CURDIR}/${entry}.${MACHINE}; then \ 69730113Sjkh ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \ 69830113Sjkh edir=${entry}.${MACHINE}; \ 69930113Sjkh cd ${.CURDIR}/$${edir}; \ 70030113Sjkh else \ 70130113Sjkh ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ 70230113Sjkh edir=${entry}; \ 70330113Sjkh cd ${.CURDIR}/$${edir}; \ 70430113Sjkh fi; \ 70530113Sjkh ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 70630113Sjkh.endfor 70730113Sjkhpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 70830113Sjkh.endfor 70930113Sjkh 71032427Sjb.endif 71132427Sjb 7121594Srgrimes.include <bsd.subdir.mk> 713