13540f0e1SJordan K. Hubbard# 2cf94fb21SBruce Evans# $Id: Makefile,v 1.206 1998/08/02 09:24:59 wosch Exp $ 3cf763a57SJohn Birrell# 4b97da423SJohn Birrell# While porting to the another architecture include the bootstrap instead 5cf763a57SJohn Birrell# of the normal build. 6cf763a57SJohn Birrell# 786f9ecbaSJohn Birrell.if exists(${.CURDIR}/Makefile.${MACHINE}) && defined(BOOTSTRAP_WORLD) 8b97da423SJohn Birrell.include "${.CURDIR}/Makefile.${MACHINE}" 9cf763a57SJohn Birrell.else 103540f0e1SJordan K. Hubbard# 113540f0e1SJordan K. Hubbard# Make command line options: 126a8d432dSMark Murray# -DCLOBBER will remove /usr/include 13191ae5bcSJordan K. Hubbard# -DMAKE_KERBEROS4 to build KerberosIV 143540f0e1SJordan K. Hubbard# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 154620010dSPeter Wemm# -DNOCLEAN do not clean at all 16dbf1ec59SAdam David# -DNOTOOLS do not rebuild any tools first 172a407ae5SGeoff Rehmet# -DNOCRYPT will prevent building of crypt versions 180eec3684SGarrett Wollman# -DNOLKM do not build loadable kernel modules 193540f0e1SJordan K. Hubbard# -DNOOBJDIR do not run ``${MAKE} obj'' 203540f0e1SJordan K. Hubbard# -DNOPROFILE do not build profiled libraries 212a407ae5SGeoff Rehmet# -DNOSECURE do not go into secure subdir 22a962de47SPeter Wemm# -DNOGAMES do not go into games subdir 2332ec48a5SAdam David# -DNOSHARE do not go into share subdir 249abd8172SJoshua Peck Macdonald# -DNOINFO do not make or install info files 25191ae5bcSJordan K. Hubbard# -DNOLIBC_R do not build libc_r. 265c496949SSatoshi Asami# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 27a962de47SPeter Wemm 28a962de47SPeter Wemm# 29a962de47SPeter Wemm# The intended user-driven targets are: 302799473bSSatoshi Asami# buildworld - rebuild *everything*, including glue to help do upgrades 312799473bSSatoshi Asami# installworld- install everything built by "buildworld" 322799473bSSatoshi Asami# world - buildworld + installworld 33a962de47SPeter Wemm# update - convenient way to update your source tree (eg: sup/cvs) 34a962de47SPeter Wemm# most - build user commands, no libraries or include files 35a962de47SPeter Wemm# installmost - install user commands, no libraries or include files 36f3c4dd0dSBruce Evans# 37f3c4dd0dSBruce Evans# Standard targets (not defined here) are documented in the makefiles in 38f3c4dd0dSBruce Evans# /usr/share/mk. These include: 39f3c4dd0dSBruce Evans# obj depend all install clean cleandepend cleanobj 40a962de47SPeter Wemm 412799473bSSatoshi Asami.if (!make(world)) && (!make(buildworld)) && (!make(installworld)) 42228e718fSBruce Evans.MAKEFLAGS:= -m ${.CURDIR}/share/mk ${.MAKEFLAGS} 432799473bSSatoshi Asami.endif 44c3d9b0f0SRodney W. Grimes 45cf94fb21SBruce Evans# 46cf94fb21SBruce Evans# Pick up any macros that are defined in the src-relative bsd.own.mk 47cf94fb21SBruce Evans# but not in the "system" bsd.own.mk. The "system" version has 48cf94fb21SBruce Evans# unfortunately already been included by the "system" sys.mk, so this 49cf94fb21SBruce Evans# only works for new macros. First undefine old macros that cause 50cf94fb21SBruce Evans# problems. 51cf94fb21SBruce Evans# 52cf94fb21SBruce Evans.undef LIBDIR 53cf94fb21SBruce Evans.include "${.CURDIR}/share/mk/bsd.own.mk" 54cf94fb21SBruce Evans 553540f0e1SJordan K. Hubbard# Put initial settings here. 563540f0e1SJordan K. HubbardSUBDIR= 57c3d9b0f0SRodney W. Grimes 58191ae5bcSJordan K. Hubbard# We must do share/info early so that installation of info `dir' 59191ae5bcSJordan K. Hubbard# entries works correctly. Do it first since it is less likely to 60191ae5bcSJordan K. Hubbard# grow dependencies on include and lib than vice versa. 61191ae5bcSJordan K. Hubbard.if exists(share/info) 62191ae5bcSJordan K. HubbardSUBDIR+= share/info 63191ae5bcSJordan K. Hubbard.endif 64191ae5bcSJordan K. Hubbard 65191ae5bcSJordan K. Hubbard# We must do include and lib early so that the perl *.ph generation 66e080a7f0SRodney W. Grimes# works correctly as it uses the header files installed by this. 6748c51d32SPoul-Henning Kamp.if exists(include) 6848c51d32SPoul-Henning KampSUBDIR+= include 6948c51d32SPoul-Henning Kamp.endif 70e080a7f0SRodney W. Grimes.if exists(lib) 71e080a7f0SRodney W. GrimesSUBDIR+= lib 72e080a7f0SRodney W. Grimes.endif 7348c51d32SPoul-Henning Kamp 743540f0e1SJordan K. Hubbard.if exists(bin) 753540f0e1SJordan K. HubbardSUBDIR+= bin 763540f0e1SJordan K. Hubbard.endif 77a962de47SPeter Wemm.if exists(games) && !defined(NOGAMES) 783540f0e1SJordan K. HubbardSUBDIR+= games 793540f0e1SJordan K. Hubbard.endif 803540f0e1SJordan K. Hubbard.if exists(gnu) 813540f0e1SJordan K. HubbardSUBDIR+= gnu 823540f0e1SJordan K. Hubbard.endif 8329844c8fSBruce Evans.if exists(kerberosIV) && exists(crypto) && !defined(NOCRYPT) && \ 8429844c8fSBruce Evans defined(MAKE_KERBEROS4) 85191ae5bcSJordan K. HubbardSUBDIR+= kerberosIV 8672181495SGeoff Rehmet.endif 873540f0e1SJordan K. Hubbard.if exists(libexec) 883540f0e1SJordan K. HubbardSUBDIR+= libexec 893540f0e1SJordan K. Hubbard.endif 903540f0e1SJordan K. Hubbard.if exists(sbin) 913540f0e1SJordan K. HubbardSUBDIR+= sbin 923540f0e1SJordan K. Hubbard.endif 9332ec48a5SAdam David.if exists(share) && !defined(NOSHARE) 943540f0e1SJordan K. HubbardSUBDIR+= share 953540f0e1SJordan K. Hubbard.endif 963540f0e1SJordan K. Hubbard.if exists(sys) 973540f0e1SJordan K. HubbardSUBDIR+= sys 983540f0e1SJordan K. Hubbard.endif 993540f0e1SJordan K. Hubbard.if exists(usr.bin) 1003540f0e1SJordan K. HubbardSUBDIR+= usr.bin 1013540f0e1SJordan K. Hubbard.endif 1023540f0e1SJordan K. Hubbard.if exists(usr.sbin) 1033540f0e1SJordan K. HubbardSUBDIR+= usr.sbin 1043540f0e1SJordan K. Hubbard.endif 1050eec3684SGarrett Wollman.if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE) 1060eec3684SGarrett WollmanSUBDIR+= secure 1070eec3684SGarrett Wollman.endif 1080eec3684SGarrett Wollman.if exists(lkm) && !defined(NOLKM) 1090eec3684SGarrett WollmanSUBDIR+= lkm 1100eec3684SGarrett Wollman.endif 111c3d9b0f0SRodney W. Grimes 112750f81deSPoul-Henning Kamp# etc must be last for "distribute" to work 113750f81deSPoul-Henning Kamp.if exists(etc) && make(distribute) 114750f81deSPoul-Henning KampSUBDIR+= etc 115750f81deSPoul-Henning Kamp.endif 116750f81deSPoul-Henning Kamp 1173540f0e1SJordan K. Hubbard# These are last, since it is nice to at least get the base system 1183540f0e1SJordan K. Hubbard# rebuilt before you do them. 119d50204c1SJordan K. Hubbard.if defined(LOCAL_DIRS) 120d50204c1SJordan K. Hubbard.for _DIR in ${LOCAL_DIRS} 121d50204c1SJordan K. Hubbard.if exists(${_DIR}) & exists(${_DIR}/Makefile) 122d50204c1SJordan K. HubbardSUBDIR+= ${_DIR} 1233540f0e1SJordan K. Hubbard.endif 124d50204c1SJordan K. Hubbard.endfor 1253540f0e1SJordan K. Hubbard.endif 1263540f0e1SJordan K. Hubbard 127a962de47SPeter Wemm# Handle -DNOOBJDIR, -DNOCLEAN and -DNOCLEANDIR 1283540f0e1SJordan K. Hubbard.if defined(NOOBJDIR) 1293540f0e1SJordan K. HubbardOBJDIR= 1303540f0e1SJordan K. Hubbard.else 1313540f0e1SJordan K. HubbardOBJDIR= obj 1323540f0e1SJordan K. Hubbard.endif 1334620010dSPeter Wemm 1344620010dSPeter Wemm.if defined(NOCLEAN) 1354620010dSPeter WemmCLEANDIR= 1364620010dSPeter Wemm.else 1373540f0e1SJordan K. Hubbard.if defined(NOCLEANDIR) 1381c9df6b4SBruce EvansCLEANDIR= clean cleandepend 1393540f0e1SJordan K. Hubbard.else 1403540f0e1SJordan K. HubbardCLEANDIR= cleandir 1413540f0e1SJordan K. Hubbard.endif 1424620010dSPeter Wemm.endif 1433540f0e1SJordan K. Hubbard 1441c9df6b4SBruce Evans.if !defined(NOCLEAN) && ${.MAKEFLAGS:M-j} == "" 1451c9df6b4SBruce Evans_NODEPEND= true 1461c9df6b4SBruce Evans.endif 1471c9df6b4SBruce Evans.if defined(_NODEPEND) 1481c9df6b4SBruce Evans_DEPEND= cleandepend 1491c9df6b4SBruce Evans.else 1501c9df6b4SBruce Evans_DEPEND= depend 1511c9df6b4SBruce Evans.endif 1521c9df6b4SBruce Evans 15329c03682SJordan K. HubbardSUP?= cvsup 15429c03682SJordan K. HubbardSUPFLAGS?= -g -L 2 -P - 155a42830afSAndrey A. Chernov 156a962de47SPeter Wemm# 15713a8a449SBruce Evans# While building tools for bootstrapping, we don't need to waste time on 158ff854580SBruce Evans# shared or profiled libraries, shared linkage, or documentation, except 159ff854580SBruce Evans# when the tools won't get cleaned we must use the defaults for shared 160ff854580SBruce Evans# libraries and shared linkage (and this doesn't waste time). 16142fce637SBruce Evans# XXX actually, we do need to waste time building shared libraries. 162a962de47SPeter Wemm# 163ff854580SBruce Evans.if defined(NOCLEAN) 164ff854580SBruce EvansMK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE 165ff854580SBruce Evans.else 16629844c8fSBruce EvansMK_FLAGS= -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED 167ff854580SBruce Evans.endif 1686a8d432dSMark Murray 169a962de47SPeter Wemm# 170a962de47SPeter Wemm# world 171a962de47SPeter Wemm# 172a962de47SPeter Wemm# Attempt to rebuild and reinstall *everything*, with reasonable chance of 173a962de47SPeter Wemm# success, regardless of how old your existing system is. 174a962de47SPeter Wemm# 175a962de47SPeter Wemm# >> Beware, it overwrites the local build environment! << 176a962de47SPeter Wemm# 177a962de47SPeter Wemmworld: 1786fcd2a47SJordan K. Hubbard @echo "--------------------------------------------------------------" 1798d558e03SAndrey A. Chernov @echo "make world started on `LC_TIME=C date`" 1806fcd2a47SJordan K. Hubbard @echo "--------------------------------------------------------------" 181a962de47SPeter Wemm.if target(pre-world) 1822799473bSSatoshi Asami @echo 1833540f0e1SJordan K. Hubbard @echo "--------------------------------------------------------------" 184a962de47SPeter Wemm @echo " Making 'pre-world' target" 1853540f0e1SJordan K. Hubbard @echo "--------------------------------------------------------------" 1867b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} pre-world 187a962de47SPeter Wemm.endif 1887b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} buildworld 1897b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} -B installworld 19016a34ebdSJordan K. Hubbard.if target(post-world) 191a962de47SPeter Wemm @echo 192a962de47SPeter Wemm @echo "--------------------------------------------------------------" 193a962de47SPeter Wemm @echo " Making 'post-world' target" 194a962de47SPeter Wemm @echo "--------------------------------------------------------------" 1957b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} post-world 19616a34ebdSJordan K. Hubbard.endif 197a962de47SPeter Wemm @echo 198a962de47SPeter Wemm @echo "--------------------------------------------------------------" 1998d558e03SAndrey A. Chernov @echo "make world completed on `LC_TIME=C date`" 200b7a48796SPeter Wemm @echo "--------------------------------------------------------------" 2013540f0e1SJordan K. Hubbard 2022799473bSSatoshi Asami.if defined(MAKEOBJDIRPREFIX) 2032799473bSSatoshi AsamiWORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp 2042799473bSSatoshi Asami.else 2052799473bSSatoshi AsamiWORLDTMP= /usr/obj${.CURDIR}/tmp 2062799473bSSatoshi Asami.endif 2072799473bSSatoshi AsamiSTRICTTMPPATH= ${WORLDTMP}/sbin:${WORLDTMP}/usr/sbin:${WORLDTMP}/bin:${WORLDTMP}/usr/bin 2082799473bSSatoshi AsamiTMPPATH= ${STRICTTMPPATH}:${PATH} 2092799473bSSatoshi Asami 2102799473bSSatoshi Asami# XXX COMPILER_PATH is needed for finding cc1, ld and as 211ad6833e4SPhilippe Charnier# XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecessary now 212ad6833e4SPhilippe Charnier# that LIBRARY_PATH is set. We still can't use -nostdlib, since gcc 2132799473bSSatoshi Asami# wouldn't link *crt.o or libgcc if it were used. 2142799473bSSatoshi Asami# XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't 2152799473bSSatoshi Asami# want that - all compile-time library paths should be resolved by gcc. 2162799473bSSatoshi Asami# It fails for set[ug]id executables (are any used?). 2172799473bSSatoshi AsamiCOMPILER_ENV= BISON_SIMPLE=${WORLDTMP}/usr/share/misc/bison.simple \ 2182799473bSSatoshi Asami COMPILER_PATH=${WORLDTMP}/usr/libexec:${WORLDTMP}/usr/bin \ 219228e718fSBruce Evans GCC_EXEC_PREFIX=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib/ \ 2202799473bSSatoshi Asami LD_LIBRARY_PATH=${WORLDTMP}${SHLIBDIR} \ 2212799473bSSatoshi Asami LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib 2222799473bSSatoshi Asami 223090fc164SPeter WemmBMAKEENV= PATH=${TMPPATH} ${COMPILER_ENV} NOEXTRADEPEND=t \ 224090fc164SPeter Wemm OBJFORMAT_PATH=${WORLDTMP}/usr/libexec:/usr/libexec 2252799473bSSatoshi AsamiXMAKEENV= PATH=${STRICTTMPPATH} ${COMPILER_ENV} \ 226090fc164SPeter Wemm OBJFORMAT_PATH=${WORLDTMP}/usr/libexec \ 2271c9df6b4SBruce Evans CFLAGS="-nostdinc ${CFLAGS}" # XXX -nostdlib 2282799473bSSatoshi Asami 2292799473bSSatoshi Asami# used to compile and install 'make' in temporary build tree 23047e0b716SBruce EvansMAKETMP= ${WORLDTMP}/make 23147e0b716SBruce EvansIBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP} 2322799473bSSatoshi Asami# bootstrap make 23329844c8fSBruce EvansBMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 2342799473bSSatoshi Asami# cross make used for compilation 23529844c8fSBruce EvansXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 2362799473bSSatoshi Asami# cross make used for final installation 23729844c8fSBruce EvansIXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make 2382799473bSSatoshi Asami 2392799473bSSatoshi Asami# 2402799473bSSatoshi Asami# buildworld 2412799473bSSatoshi Asami# 2422799473bSSatoshi Asami# Attempt to rebuild the entire system, with reasonable chance of 2432799473bSSatoshi Asami# success, regardless of how old your existing system is. 2442799473bSSatoshi Asami# 2452799473bSSatoshi Asamibuildworld: 2462799473bSSatoshi Asami.if !defined(NOCLEAN) 2472799473bSSatoshi Asami @echo 2482799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2492799473bSSatoshi Asami @echo " Cleaning up the temporary build tree" 2502799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2512799473bSSatoshi Asami mkdir -p ${WORLDTMP} 2522799473bSSatoshi Asami chflags -R noschg ${WORLDTMP}/ 2532799473bSSatoshi Asami rm -rf ${WORLDTMP} 2542799473bSSatoshi Asami.endif 255dbf1ec59SAdam David.if !defined(NOTOOLS) 2562799473bSSatoshi Asami @echo 2572799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2582799473bSSatoshi Asami @echo " Making make" 2592799473bSSatoshi Asami @echo "--------------------------------------------------------------" 26047e0b716SBruce Evans mkdir -p ${WORLDTMP}/usr/bin ${MAKETMP} 26147e0b716SBruce Evans ( \ 2627b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/make; \ 2637b97e2bbSBruce Evans MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 2647b97e2bbSBruce Evans ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all; \ 2657b97e2bbSBruce Evans ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install; \ 26647e0b716SBruce Evans ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean \ 26747e0b716SBruce Evans ) 268f55eda87SSøren Schmidt @echo 269f55eda87SSøren Schmidt @echo "--------------------------------------------------------------" 27070c9f974SBruce Evans @echo " Making mtree" 271f55eda87SSøren Schmidt @echo "--------------------------------------------------------------" 27270c9f974SBruce Evans mkdir -p ${WORLDTMP}/usr/sbin ${WORLDTMP}/mtree 273f55eda87SSøren Schmidt ( \ 274f55eda87SSøren Schmidt cd ${.CURDIR}/usr.sbin/mtree; \ 275f55eda87SSøren Schmidt MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 27670c9f974SBruce Evans export MAKEOBJDIR=${WORLDTMP}/mtree; \ 27770c9f974SBruce Evans ${BMAKE} ${MK_FLAGS} all; \ 27870c9f974SBruce Evans ${BMAKE} ${MK_FLAGS} -B install clean \ 279f55eda87SSøren Schmidt ) 280dbf1ec59SAdam David.endif 2812799473bSSatoshi Asami @echo 2822799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2832799473bSSatoshi Asami @echo " Making hierarchy" 2842799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2857b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} hierarchy 2862799473bSSatoshi Asami.if !defined(NOCLEAN) 2872799473bSSatoshi Asami @echo 2882799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2892799473bSSatoshi Asami @echo " Cleaning up the obj tree" 2902799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2917b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} ${CLEANDIR:S/^/par-/} 2922799473bSSatoshi Asami.endif 2932799473bSSatoshi Asami.if !defined(NOOBJDIR) 2942799473bSSatoshi Asami @echo 2952799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2962799473bSSatoshi Asami @echo " Rebuilding the obj tree" 2972799473bSSatoshi Asami @echo "--------------------------------------------------------------" 2987b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} par-${OBJDIR} 2992799473bSSatoshi Asami.endif 300dbf1ec59SAdam David.if !defined(NOTOOLS) 3012799473bSSatoshi Asami @echo 3022799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3032799473bSSatoshi Asami @echo " Rebuilding bootstrap tools" 3042799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3057b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} bootstrap 3062799473bSSatoshi Asami @echo 3072799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3082799473bSSatoshi Asami @echo " Rebuilding tools necessary to build the include files" 3092799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3107b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} include-tools 311dbf1ec59SAdam David.endif 3122799473bSSatoshi Asami @echo 3132799473bSSatoshi Asami @echo "--------------------------------------------------------------" 314228e718fSBruce Evans @echo " Rebuilding ${DESTDIR}/usr/include" 3152799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3166f9fb94eSPeter Wemm cd ${.CURDIR}; SHARED=copies ${BMAKE} includes 3172799473bSSatoshi Asami @echo 3182799473bSSatoshi Asami @echo "--------------------------------------------------------------" 31929844c8fSBruce Evans @echo " Rebuilding bootstrap libraries" 3202799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3217b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} bootstrap-libraries 322dbf1ec59SAdam David.if !defined(NOTOOLS) 3232799473bSSatoshi Asami @echo 3242799473bSSatoshi Asami @echo "--------------------------------------------------------------" 325a6919ef8SJohn Birrell @echo " Rebuilding tools needed to build libraries" 326a6919ef8SJohn Birrell @echo "--------------------------------------------------------------" 3277b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} lib-tools 328a6919ef8SJohn Birrell.endif 329a6919ef8SJohn Birrell.if !defined(NOTOOLS) 330a6919ef8SJohn Birrell @echo 331a6919ef8SJohn Birrell @echo "--------------------------------------------------------------" 3322799473bSSatoshi Asami @echo " Rebuilding all other tools needed to build the world" 3332799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3347b97e2bbSBruce Evans cd ${.CURDIR}; ${BMAKE} build-tools 335dbf1ec59SAdam David.endif 3361c9df6b4SBruce Evans.if !defined(_NODEPEND) 3372799473bSSatoshi Asami @echo 3382799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3392799473bSSatoshi Asami @echo " Rebuilding dependencies" 3402799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3417b97e2bbSBruce Evans cd ${.CURDIR}; ${XMAKE} par-depend 3421c9df6b4SBruce Evans.endif 3432799473bSSatoshi Asami @echo 3442799473bSSatoshi Asami @echo "--------------------------------------------------------------" 34529844c8fSBruce Evans @echo " Building libraries" 34629844c8fSBruce Evans @echo "--------------------------------------------------------------" 3477b97e2bbSBruce Evans cd ${.CURDIR}; ${XMAKE} -DNOINFO -DNOMAN libraries 34829844c8fSBruce Evans @echo 34929844c8fSBruce Evans @echo "--------------------------------------------------------------" 3502799473bSSatoshi Asami @echo " Building everything.." 3512799473bSSatoshi Asami @echo "--------------------------------------------------------------" 3527b97e2bbSBruce Evans cd ${.CURDIR}; ${XMAKE} all 3532799473bSSatoshi Asami 3542799473bSSatoshi Asami# 3552799473bSSatoshi Asami# installworld 3562799473bSSatoshi Asami# 3572799473bSSatoshi Asami# Installs everything compiled by a 'buildworld'. 3582799473bSSatoshi Asami# 3592799473bSSatoshi Asamiinstallworld: 3607b97e2bbSBruce Evans cd ${.CURDIR}; ${IXMAKE} reinstall 3612799473bSSatoshi Asami 362a962de47SPeter Wemm# 363a962de47SPeter Wemm# reinstall 364a962de47SPeter Wemm# 365a962de47SPeter Wemm# If you have a build server, you can NFS mount the source and obj directories 366a962de47SPeter Wemm# and do a 'make reinstall' on the *client* to install new binaries from the 367a962de47SPeter Wemm# most recent server build. 368a962de47SPeter Wemm# 369a962de47SPeter Wemmreinstall: 3704620010dSPeter Wemm @echo "--------------------------------------------------------------" 371a962de47SPeter Wemm @echo " Making hierarchy" 372a962de47SPeter Wemm @echo "--------------------------------------------------------------" 3737b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} hierarchy 374a962de47SPeter Wemm @echo 375a962de47SPeter Wemm @echo "--------------------------------------------------------------" 376b7a48796SPeter Wemm @echo " Installing everything.." 377b7a48796SPeter Wemm @echo "--------------------------------------------------------------" 3787b97e2bbSBruce Evans cd ${.CURDIR}; ${MAKE} install 379cf94fb21SBruce Evans.if ${MACHINE_ARCH} == "i386" 380b7a48796SPeter Wemm @echo 381b7a48796SPeter Wemm @echo "--------------------------------------------------------------" 382165932ddSNate Williams @echo " Re-scanning the shared libraries.." 383165932ddSNate Williams @echo "--------------------------------------------------------------" 38400ef3836SBruce Evans cd ${.CURDIR}; /sbin/ldconfig -R 38544600413SJohn Birrell.endif 386165932ddSNate Williams @echo 387165932ddSNate Williams @echo "--------------------------------------------------------------" 388b7a48796SPeter Wemm @echo " Rebuilding man page indexes" 389b7a48796SPeter Wemm @echo "--------------------------------------------------------------" 3907b97e2bbSBruce Evans cd ${.CURDIR}/share/man; ${MAKE} makedb 3914620010dSPeter Wemm 392a962de47SPeter Wemm# 393a962de47SPeter Wemm# update 394a962de47SPeter Wemm# 395a962de47SPeter Wemm# Update the source tree, by running sup and/or running cvs to update to the 396a962de47SPeter Wemm# latest copy. 397a962de47SPeter Wemm# 39895516197SPaul Richardsupdate: 39995516197SPaul Richards.if defined(SUP_UPDATE) 40095516197SPaul Richards @echo "--------------------------------------------------------------" 40129c03682SJordan K. Hubbard @echo "Running ${SUP}" 40295516197SPaul Richards @echo "--------------------------------------------------------------" 403a42830afSAndrey A. Chernov @${SUP} ${SUPFLAGS} ${SUPFILE} 404b032e1f9SAndrey A. Chernov.if defined(SUPFILE1) 405a42830afSAndrey A. Chernov @${SUP} ${SUPFLAGS} ${SUPFILE1} 406b032e1f9SAndrey A. Chernov.endif 407b032e1f9SAndrey A. Chernov.if defined(SUPFILE2) 408a42830afSAndrey A. Chernov @${SUP} ${SUPFLAGS} ${SUPFILE2} 409b032e1f9SAndrey A. Chernov.endif 41095516197SPaul Richards.endif 41195516197SPaul Richards.if defined(CVS_UPDATE) 41295516197SPaul Richards @echo "--------------------------------------------------------------" 41395516197SPaul Richards @echo "Updating /usr/src from cvs repository" ${CVSROOT} 41495516197SPaul Richards @echo "--------------------------------------------------------------" 4157b97e2bbSBruce Evans cd ${.CURDIR}; cvs -q update -P -d 41695516197SPaul Richards.endif 4173540f0e1SJordan K. Hubbard 418a962de47SPeter Wemm# 419a962de47SPeter Wemm# most 420a962de47SPeter Wemm# 421a962de47SPeter Wemm# Build most of the user binaries on the existing system libs and includes. 422a962de47SPeter Wemm# 423ac08bc0cSGarrett Wollmanmost: 424ac08bc0cSGarrett Wollman @echo "--------------------------------------------------------------" 425ac08bc0cSGarrett Wollman @echo " Building programs only" 426ac08bc0cSGarrett Wollman @echo "--------------------------------------------------------------" 4277b97e2bbSBruce Evans cd ${.CURDIR}/bin; ${MAKE} all 4287b97e2bbSBruce Evans cd ${.CURDIR}/sbin; ${MAKE} all 4297b97e2bbSBruce Evans cd ${.CURDIR}/libexec; ${MAKE} all 4307b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin; ${MAKE} all 4317b97e2bbSBruce Evans cd ${.CURDIR}/usr.sbin; ${MAKE} all 4327b97e2bbSBruce Evans cd ${.CURDIR}/gnu/libexec; ${MAKE} all 4337b97e2bbSBruce Evans cd ${.CURDIR}/gnu/usr.bin; ${MAKE} all 4347b97e2bbSBruce Evans cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} all 435191ae5bcSJordan K. Hubbard#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 4367b97e2bbSBruce Evans# cd ${.CURDIR}/kerberosIV; ${MAKE} most 437ac08bc0cSGarrett Wollman#.endif 438ac08bc0cSGarrett Wollman#.if !defined(NOSECURE) && !defined(NOCRYPT) 4397b97e2bbSBruce Evans# cd ${.CURDIR}/secure; ${MAKE} most 440ac08bc0cSGarrett Wollman#.endif 441ac08bc0cSGarrett Wollman 442a962de47SPeter Wemm# 443a962de47SPeter Wemm# installmost 444a962de47SPeter Wemm# 445a962de47SPeter Wemm# Install the binaries built by the 'most' target. This does not include 446a962de47SPeter Wemm# libraries or include files. 447a962de47SPeter Wemm# 448a962de47SPeter Wemminstallmost: 449a962de47SPeter Wemm @echo "--------------------------------------------------------------" 450a962de47SPeter Wemm @echo " Installing programs only" 451a962de47SPeter Wemm @echo "--------------------------------------------------------------" 4527b97e2bbSBruce Evans cd ${.CURDIR}/bin; ${MAKE} install 4537b97e2bbSBruce Evans cd ${.CURDIR}/sbin; ${MAKE} install 4547b97e2bbSBruce Evans cd ${.CURDIR}/libexec; ${MAKE} install 4557b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin; ${MAKE} install 4567b97e2bbSBruce Evans cd ${.CURDIR}/usr.sbin; ${MAKE} install 4577b97e2bbSBruce Evans cd ${.CURDIR}/gnu/libexec; ${MAKE} install 4587b97e2bbSBruce Evans cd ${.CURDIR}/gnu/usr.bin; ${MAKE} install 4597b97e2bbSBruce Evans cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} install 460191ae5bcSJordan K. Hubbard#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 4617b97e2bbSBruce Evans# cd ${.CURDIR}/kerberosIV; ${MAKE} installmost 462a962de47SPeter Wemm#.endif 463a962de47SPeter Wemm#.if !defined(NOSECURE) && !defined(NOCRYPT) 4647b97e2bbSBruce Evans# cd ${.CURDIR}/secure; ${MAKE} installmost 465a962de47SPeter Wemm#.endif 466a962de47SPeter Wemm 467a962de47SPeter Wemm# 468a962de47SPeter Wemm# ------------------------------------------------------------------------ 469a962de47SPeter Wemm# 470a962de47SPeter Wemm# From here onwards are utility targets used by the 'make world' and 471a962de47SPeter Wemm# related targets. If your 'world' breaks, you may like to try to fix 472a962de47SPeter Wemm# the problem and manually run the following targets to attempt to 473a962de47SPeter Wemm# complete the build. Beware, this is *not* guaranteed to work, you 474a962de47SPeter Wemm# need to have a pretty good grip on the current state of the system 475a962de47SPeter Wemm# to attempt to manually finish it. If in doubt, 'make world' again. 476a962de47SPeter Wemm# 477a962de47SPeter Wemm 478a962de47SPeter Wemm# 479a962de47SPeter Wemm# heirarchy - ensure that all the needed directories are present 480a962de47SPeter Wemm# 481a962de47SPeter Wemmhierarchy: 4827b97e2bbSBruce Evans cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 483a962de47SPeter Wemm 484a962de47SPeter Wemm# 485a962de47SPeter Wemm# bootstrap - [re]build tools needed to run the actual build, this includes 486a962de47SPeter Wemm# tools needed by 'make depend', as some tools are needed to generate source 487a962de47SPeter Wemm# for the dependency information to be gathered from. 488a962de47SPeter Wemm# 489a962de47SPeter Wemmbootstrap: 4902799473bSSatoshi Asami.if defined(DESTDIR) 4912799473bSSatoshi Asami rm -f ${DESTDIR}/usr/src/sys 4922799473bSSatoshi Asami ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src 4937b97e2bbSBruce Evans cd ${.CURDIR}/include; find -dx . | cpio -dump ${DESTDIR}/usr/include 494452bbab3SPeter Wemm.for d in net netinet posix4 sys vm machine 495452bbab3SPeter Wemm if [ -h ${DESTDIR}/usr/include/$d ]; then \ 496452bbab3SPeter Wemm rm -f ${DESTDIR}/usr/include/$d ; \ 497452bbab3SPeter Wemm fi 498452bbab3SPeter Wemm.endfor 4996f9fb94eSPeter Wemm cd ${.CURDIR}/sys; \ 5006f9fb94eSPeter Wemm find -dx net netinet posix4 sys vm -name '*.h' -o -type d | \ 5016f9fb94eSPeter Wemm cpio -dump ${DESTDIR}/usr/include 5026f9fb94eSPeter Wemm mkdir -p ${DESTDIR}/usr/include/machine 50344600413SJohn Birrell cd ${.CURDIR}/sys/${MACHINE_ARCH}/include; find -dx . -name '*.h' -o -type d | \ 5046f9fb94eSPeter Wemm cpio -dump ${DESTDIR}/usr/include/machine 5052799473bSSatoshi Asami.endif 5067b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/make; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5077b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} all; \ 50897fe7f47SJordan K. Hubbard ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5097b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/xinstall; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5107b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} all; \ 51197fe7f47SJordan K. Hubbard ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5126943ec80SBruce Evans cd ${.CURDIR}/usr.bin/yacc; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5136943ec80SBruce Evans ${MAKE} ${MK_FLAGS} all; \ 5146943ec80SBruce Evans ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5157b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/lex; ${MAKE} bootstrap; \ 5167b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5177b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} -DNOLIB all; \ 5189e3b9b4dSBruce Evans ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} 5199e3b9b4dSBruce Evans.if !defined(NOOBJDIR) 5209e3b9b4dSBruce Evans cd ${.CURDIR}/usr.bin/lex; ${MAKE} ${OBJDIR} 5219e3b9b4dSBruce Evans.endif 5227c780e8eSJordan K. Hubbard cd ${.CURDIR}/usr.sbin/mtree; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5237c780e8eSJordan K. Hubbard ${MAKE} ${MK_FLAGS} all; \ 5247c780e8eSJordan K. Hubbard ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5256f9fb94eSPeter Wemm.if defined(DESTDIR) 5266f9fb94eSPeter Wemm cd ${.CURDIR}/include && ${MAKE} copies 5276f9fb94eSPeter Wemm.endif 528a962de47SPeter Wemm 529a962de47SPeter Wemm# 530a962de47SPeter Wemm# include-tools - generally the same as 'bootstrap', except that it's for 531a962de47SPeter Wemm# things that are specifically needed to generate include files. 532a962de47SPeter Wemm# 5332799473bSSatoshi Asami# XXX should be merged with bootstrap, it's not worth keeeping them separate. 5342799473bSSatoshi Asami# Well, maybe it is now. We force 'cleandepend' here to avoid dependencies 5352799473bSSatoshi Asami# on cleaned away headers in ${WORLDTMP}. 536a962de47SPeter Wemm# 537a962de47SPeter Wemminclude-tools: 5384a9d3efbSBruce Evans.for d in usr.bin/compile_et usr.bin/rpcgen 5397b97e2bbSBruce Evans cd ${.CURDIR}/$d; ${MAKE} cleandepend; \ 5407b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 5417b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} all; \ 54297fe7f47SJordan K. Hubbard ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 5434a9d3efbSBruce Evans.endfor 544a962de47SPeter Wemm 545a962de47SPeter Wemm# 546a962de47SPeter Wemm# includes - possibly generate and install the include files. 547a962de47SPeter Wemm# 5485b16f1c5SPeter Wemmincludes: 5493540f0e1SJordan K. Hubbard.if defined(CLOBBER) 5505a9e9cbaSRodney W. Grimes rm -rf ${DESTDIR}/usr/include/* 5515a9e9cbaSRodney W. Grimes mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 5525a9e9cbaSRodney W. Grimes -p ${DESTDIR}/usr/include 5533540f0e1SJordan K. Hubbard.endif 5547b97e2bbSBruce Evans cd ${.CURDIR}/include; ${MAKE} -B all install 5557b97e2bbSBruce Evans cd ${.CURDIR}/gnu/include; ${MAKE} install 5567b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libmp; ${MAKE} beforeinstall 5577b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libobjc; ${MAKE} beforeinstall 5587b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libreadline; ${MAKE} beforeinstall 5597b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libregex; ${MAKE} beforeinstall 5607b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libstdc++; ${MAKE} beforeinstall 5617b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libg++; ${MAKE} beforeinstall 5627b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libdialog; ${MAKE} beforeinstall 5637b97e2bbSBruce Evans cd ${.CURDIR}/gnu/lib/libgmp; ${MAKE} beforeinstall 564191ae5bcSJordan K. Hubbard.if exists(secure) && !defined(NOCRYPT) 5657b97e2bbSBruce Evans cd ${.CURDIR}/secure/lib/libdes; ${MAKE} beforeinstall 566191ae5bcSJordan K. Hubbard.endif 567191ae5bcSJordan K. Hubbard.if exists(kerberosIV) && !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 5687b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libacl; ${MAKE} beforeinstall 5697b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libkadm; ${MAKE} beforeinstall 5707b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libkafs; ${MAKE} beforeinstall 5717b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libkdb; ${MAKE} beforeinstall 5727b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libkrb; ${MAKE} beforeinstall 5737b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall 574191ae5bcSJordan K. Hubbard.else 5757b97e2bbSBruce Evans cd ${.CURDIR}/lib/libtelnet; ${MAKE} beforeinstall 576c368d11dSGeoff Rehmet.endif 577cf763a57SJohn Birrell.if exists(${.CURDIR}/lib/csu/${MACHINE}) 5787b97e2bbSBruce Evans cd ${.CURDIR}/lib/csu/${MACHINE}; ${MAKE} beforeinstall 579cf763a57SJohn Birrell.endif 5807b97e2bbSBruce Evans cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall 5817b97e2bbSBruce Evans cd ${.CURDIR}/lib/libc; ${MAKE} beforeinstall 5827b97e2bbSBruce Evans cd ${.CURDIR}/lib/libcalendar; ${MAKE} beforeinstall 5837b97e2bbSBruce Evans cd ${.CURDIR}/lib/libcurses; ${MAKE} beforeinstall 5847b97e2bbSBruce Evans cd ${.CURDIR}/lib/libdisk; ${MAKE} beforeinstall 5857b97e2bbSBruce Evans cd ${.CURDIR}/lib/libedit; ${MAKE} beforeinstall 5867b97e2bbSBruce Evans cd ${.CURDIR}/lib/libftpio; ${MAKE} beforeinstall 5877b97e2bbSBruce Evans cd ${.CURDIR}/lib/libmd; ${MAKE} beforeinstall 5887b97e2bbSBruce Evans cd ${.CURDIR}/lib/libmytinfo; ${MAKE} beforeinstall 5897b97e2bbSBruce Evans cd ${.CURDIR}/lib/libncurses; ${MAKE} beforeinstall 5902c0e14c2SRodney W. Grimes.if !defined(WANT_CSRG_LIBM) 5917b97e2bbSBruce Evans cd ${.CURDIR}/lib/msun; ${MAKE} beforeinstall 592b8afcd33SPaul Richards.endif 5937b97e2bbSBruce Evans cd ${.CURDIR}/lib/libopie; ${MAKE} beforeinstall 5947b97e2bbSBruce Evans cd ${.CURDIR}/lib/libpcap; ${MAKE} beforeinstall 5957b97e2bbSBruce Evans cd ${.CURDIR}/lib/librpcsvc; ${MAKE} beforeinstall 5967b97e2bbSBruce Evans cd ${.CURDIR}/lib/libskey; ${MAKE} beforeinstall 597191ae5bcSJordan K. Hubbard.if !defined(NOTCL) && exists (${.CURDIR}/contrib/tcl) && \ 598191ae5bcSJordan K. Hubbard exists(${.CURDIR}/usr.bin/tclsh) && exists (${.CURDIR}/lib/libtcl) 5997b97e2bbSBruce Evans cd ${.CURDIR}/lib/libtcl; ${MAKE} installhdrs 600191ae5bcSJordan K. Hubbard.endif 6017b97e2bbSBruce Evans cd ${.CURDIR}/lib/libtermcap; ${MAKE} beforeinstall 6027b97e2bbSBruce Evans cd ${.CURDIR}/lib/libcom_err; ${MAKE} beforeinstall 6037b97e2bbSBruce Evans cd ${.CURDIR}/lib/libss; ${MAKE} -B hdrs beforeinstall 6047b97e2bbSBruce Evans cd ${.CURDIR}/lib/libscsi; ${MAKE} beforeinstall 6057b97e2bbSBruce Evans cd ${.CURDIR}/lib/libutil; ${MAKE} beforeinstall 6067b97e2bbSBruce Evans cd ${.CURDIR}/lib/libvgl; ${MAKE} beforeinstall 6077b97e2bbSBruce Evans cd ${.CURDIR}/lib/libz; ${MAKE} beforeinstall 6087b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/f2c; ${MAKE} beforeinstall 6097b97e2bbSBruce Evans cd ${.CURDIR}/usr.bin/lex; ${MAKE} beforeinstall 6103540f0e1SJordan K. Hubbard 611a962de47SPeter Wemm# 61244600413SJohn Birrell# Declare tools if they are not required on all architectures. 61344600413SJohn Birrell# 614cf94fb21SBruce Evans.if ${MACHINE_ARCH} == "i386" 61544600413SJohn Birrell# aout tools: 61644600413SJohn Birrell_aout_ar = usr.bin/ar 61744600413SJohn Birrell_aout_as = gnu/usr.bin/as 61844600413SJohn Birrell_aout_ld = gnu/usr.bin/ld 61944600413SJohn Birrell_aout_nm = usr.bin/nm 62044600413SJohn Birrell_aout_ranlib = usr.bin/ranlib 62144600413SJohn Birrell_aout_size = usr.bin/size 62244600413SJohn Birrell_aout_strip = usr.bin/strip 62344600413SJohn Birrell_objformat = usr.bin/objformat 62444600413SJohn Birrell.endif 62544600413SJohn Birrell 62644600413SJohn Birrell# 627a962de47SPeter Wemm# lib-tools - build tools to compile and install the libraries. 628a962de47SPeter Wemm# 6292799473bSSatoshi Asami# XXX gperf is required for cc 6302799473bSSatoshi Asami# XXX a new ld and tsort is required for cc 63165b94a0dSNate Williamslib-tools: 6322799473bSSatoshi Asami.for d in \ 6332799473bSSatoshi Asami gnu/usr.bin/gperf \ 63444600413SJohn Birrell ${_aout_ld} \ 6352799473bSSatoshi Asami usr.bin/tsort \ 63644600413SJohn Birrell ${_aout_as} \ 6372799473bSSatoshi Asami gnu/usr.bin/bison \ 6382799473bSSatoshi Asami gnu/usr.bin/cc \ 63944600413SJohn Birrell ${_aout_ar} \ 64000ef3836SBruce Evans usr.bin/env \ 6412799473bSSatoshi Asami usr.bin/lex/lib \ 6422799473bSSatoshi Asami usr.bin/mk_cmds \ 64344600413SJohn Birrell ${_aout_nm} \ 64444600413SJohn Birrell ${_aout_ranlib} \ 64544600413SJohn Birrell ${_aout_strip} \ 64677dfb966SSøren Schmidt gnu/usr.bin/binutils \ 6471907cbbdSPeter Wemm usr.bin/uudecode \ 64844600413SJohn Birrell ${_objformat} 6497b97e2bbSBruce Evans cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 6507b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} all; \ 6517b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} -B install; \ 652ff854580SBruce Evans ${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR} 6532799473bSSatoshi Asami.endfor 65465b94a0dSNate Williams 655a962de47SPeter Wemm# 65629844c8fSBruce Evans# We have to know too much about ordering and subdirs in the lib trees: 657a962de47SPeter Wemm# 65829844c8fSBruce Evans# To satisfy shared library linkage when only the libraries being built 65929844c8fSBruce Evans# are visible: 66013a8a449SBruce Evans# 66113a8a449SBruce Evans# libcom_err must be built before libss. 66213a8a449SBruce Evans# libcrypt and libmd must be built before libskey. 66313a8a449SBruce Evans# libm must be built before libtcl. 66413a8a449SBruce Evans# libmytinfo must be built before libdialog and libncurses. 66513a8a449SBruce Evans# libncurses must be built before libdialog. 66613a8a449SBruce Evans# libtermcap must be built before libcurses, libedit and libreadline. 66713a8a449SBruce Evans# 66829844c8fSBruce Evans# Some libraries are built conditionally and/or are in inconsistently 66929844c8fSBruce Evans# named directories: 67029844c8fSBruce Evans# 67129844c8fSBruce Evans.if exists(lib/csu/${MACHINE}.pcc) 67229844c8fSBruce Evans_csu=lib/csu/${MACHINE}.pcc 67329844c8fSBruce Evans.else 67429844c8fSBruce Evans_csu=lib/csu/${MACHINE} 67513a8a449SBruce Evans.endif 67629844c8fSBruce Evans 67700ef3836SBruce Evans.if !defined(NOSECURE) && !defined(NOCRYPT) 67800ef3836SBruce Evans_libcrypt= secure/lib/libcrypt lib/libcrypt 679215c9a37SPeter Wemm.else 680215c9a37SPeter Wemm_libcrypt= lib/libcrypt 68129844c8fSBruce Evans.endif 68229844c8fSBruce Evans 68329844c8fSBruce Evans.if defined(WANT_CSRG_LIBM) 68429844c8fSBruce Evans_libm= lib/libm 68529844c8fSBruce Evans.else 68629844c8fSBruce Evans_libm= lib/msun 68729844c8fSBruce Evans.endif 68829844c8fSBruce Evans 68929844c8fSBruce Evans# 69029844c8fSBruce Evans# bootstrap-libraries - build just enough libraries for the bootstrap 69129844c8fSBruce Evans# tools, and install them under ${WORLDTMP}. 69229844c8fSBruce Evans# 69329844c8fSBruce Evans# Build csu and libgcc early so that some tools get linked to the new 69429844c8fSBruce Evans# versions (too late for the main tools, however). Then build the 69529844c8fSBruce Evans# necessary prerequisite libraries (libtermcap just needs to be before 69629844c8fSBruce Evans# libcurses, and this only matters for the NOCLEAN case when NOPIC is 69729844c8fSBruce Evans# not set). 69829844c8fSBruce Evans# 69929844c8fSBruce Evans# This is mostly wrong. The build tools must run on the host system, 70029844c8fSBruce Evans# so they should use host libraries. We depend on the target being 70129844c8fSBruce Evans# similar enough to the host for new target libraries to work on the 70229844c8fSBruce Evans# host. 70329844c8fSBruce Evans# 70429844c8fSBruce Evansbootstrap-libraries: 70529844c8fSBruce Evans.for _lib in ${_csu} gnu/usr.bin/cc/libgcc lib/libtermcap \ 706cabb97dcSSøren Schmidt gnu/lib/libregex gnu/lib/libreadline lib/libc \ 707215c9a37SPeter Wemm ${_libcrypt} lib/libcurses lib/libedit ${_libm} \ 70829844c8fSBruce Evans lib/libmd lib/libutil lib/libz usr.bin/lex/lib 70913a8a449SBruce Evans.if exists(${.CURDIR}/${_lib}) 7107b97e2bbSBruce Evans cd ${.CURDIR}/${_lib}; \ 7117b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 7127b97e2bbSBruce Evans ${MAKE} ${MK_FLAGS} all; \ 71397fe7f47SJordan K. Hubbard ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 714598c1e50SJohn Polstra.endif 71513a8a449SBruce Evans.endfor 71629844c8fSBruce Evans 71729844c8fSBruce Evans# 71829844c8fSBruce Evans# libraries - build all libraries, and install them under ${DESTDIR}. 71929844c8fSBruce Evans# 72029844c8fSBruce Evans# The ordering is not as special as for bootstrap-libraries. Build 72129844c8fSBruce Evans# the prerequisites first, then build almost everything else in 72229844c8fSBruce Evans# alphabetical order. 72329844c8fSBruce Evans# 72429844c8fSBruce Evanslibraries: 72529844c8fSBruce Evans.for _lib in lib/libcom_err ${_libcrypt} ${_libm} lib/libmytinfo \ 72629844c8fSBruce Evans lib/libncurses lib/libtermcap \ 72729844c8fSBruce Evans gnu/lib gnu/usr.bin/cc/libgcc lib usr.bin/lex/lib usr.sbin/pcvt/keycap 72829844c8fSBruce Evans.if exists(${.CURDIR}/${_lib}) 7297b97e2bbSBruce Evans cd ${.CURDIR}/${_lib}; ${MAKE} all; ${MAKE} -B install 73029844c8fSBruce Evans.endif 73129844c8fSBruce Evans.endfor 73213a8a449SBruce Evans.if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE) 7337b97e2bbSBruce Evans cd ${.CURDIR}/secure/lib; ${MAKE} all; ${MAKE} -B install 734a962de47SPeter Wemm.endif 73513a8a449SBruce Evans.if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \ 73613a8a449SBruce Evans defined(MAKE_KERBEROS4) 7377b97e2bbSBruce Evans cd ${.CURDIR}/kerberosIV/lib; ${MAKE} all; ${MAKE} -B install 73872181495SGeoff Rehmet.endif 7393540f0e1SJordan K. Hubbard 7401d86f959SBruce Evans# 7411d86f959SBruce Evans# Exclude unused tools from build-tools. 7421d86f959SBruce Evans# 7431d86f959SBruce Evans.if !defined(NOGAMES) && exists(${.CURDIR}/games) 7441d86f959SBruce Evans_adventure= games/adventure 7451d86f959SBruce Evans_caesar= games/caesar 7461d86f959SBruce Evans_hack= games/hack 7471d86f959SBruce Evans_phantasia= games/phantasia 7481d86f959SBruce Evans_strfile= games/fortune/strfile 7491d86f959SBruce Evans.endif 7501d86f959SBruce Evans.if !defined(NOPERL) 751e4b5626aSJohn Hay_perl= gnu/usr.bin/perl/perl 752e4b5626aSJohn Hay.endif 7531d86f959SBruce Evans.if !defined(NOSHARE) && exists(${.CURDIR}/share) 7541d86f959SBruce Evans_scrnmaps= share/syscons/scrnmaps 7551d86f959SBruce Evans.endif 7561d86f959SBruce Evans.if !defined(NOLKM) && exists(${.CURDIR}/lkm) 7571d86f959SBruce Evans_linux= lkm/linux 7581d86f959SBruce Evans.endif 7591d86f959SBruce Evans 7601d86f959SBruce EvansBTMAKEFLAGS= ${MK_FLAGS} -D_BUILD_TOOLS 761e4b5626aSJohn Hay 762a962de47SPeter Wemm# 763a962de47SPeter Wemm# build-tools - build and install any other tools needed to complete the 764a962de47SPeter Wemm# compile and install. 7652799473bSSatoshi Asami# ifdef stale 7662799473bSSatoshi Asami# bc and cpp are required to build groff. Otherwise, the order here is 7672799473bSSatoshi Asami# mostly historical, i.e., bogus. 7682799473bSSatoshi Asami# chmod is used to build gcc's tmpmultilib[2] at obscure times. 7692799473bSSatoshi Asami# endif stale 7702799473bSSatoshi Asami# XXX uname is a bug - the target should not depend on the host. 771a962de47SPeter Wemm# 7722e10cdcdSPoul-Henning Kampbuild-tools: 773f3c4dd0dSBruce Evans.for d in \ 7742799473bSSatoshi Asami bin/cat \ 7752799473bSSatoshi Asami bin/chmod \ 7762799473bSSatoshi Asami bin/cp \ 7772799473bSSatoshi Asami bin/date \ 7782799473bSSatoshi Asami bin/dd \ 7792799473bSSatoshi Asami bin/echo \ 7802799473bSSatoshi Asami bin/expr \ 7812799473bSSatoshi Asami bin/hostname \ 7822799473bSSatoshi Asami bin/ln \ 7832799473bSSatoshi Asami bin/ls \ 7842799473bSSatoshi Asami bin/mkdir \ 7852799473bSSatoshi Asami bin/mv \ 7862799473bSSatoshi Asami bin/rm \ 7872799473bSSatoshi Asami bin/test \ 7881d86f959SBruce Evans ${_caesar} \ 7891d86f959SBruce Evans ${_strfile} \ 790f3c4dd0dSBruce Evans gnu/usr.bin/awk \ 7912799473bSSatoshi Asami gnu/usr.bin/bc \ 7922799473bSSatoshi Asami gnu/usr.bin/grep \ 7932799473bSSatoshi Asami gnu/usr.bin/groff \ 7942799473bSSatoshi Asami gnu/usr.bin/gzip \ 7952799473bSSatoshi Asami gnu/usr.bin/man/makewhatis \ 796e66437e7SBruce Evans gnu/usr.bin/patch \ 797e4b5626aSJohn Hay ${_perl} \ 7982799473bSSatoshi Asami gnu/usr.bin/sort \ 7992799473bSSatoshi Asami gnu/usr.bin/texinfo \ 8002799473bSSatoshi Asami usr.bin/basename \ 8012799473bSSatoshi Asami usr.bin/cap_mkdb \ 8022799473bSSatoshi Asami usr.bin/chflags \ 8032799473bSSatoshi Asami usr.bin/cmp \ 8042799473bSSatoshi Asami usr.bin/col \ 80527406826SBruce Evans usr.bin/colldef \ 8062799473bSSatoshi Asami usr.bin/cpp \ 8072799473bSSatoshi Asami usr.bin/expand \ 8082799473bSSatoshi Asami usr.bin/file2c \ 8092799473bSSatoshi Asami usr.bin/find \ 8102799473bSSatoshi Asami usr.bin/gencat \ 811873e8456SJordan K. Hubbard usr.bin/id \ 812e2fea9c5SPeter Wemm usr.bin/join \ 8132799473bSSatoshi Asami usr.bin/lorder \ 8142799473bSSatoshi Asami usr.bin/m4 \ 8152799473bSSatoshi Asami usr.bin/mkdep \ 81627406826SBruce Evans usr.bin/mklocale \ 8172799473bSSatoshi Asami usr.bin/paste \ 8182799473bSSatoshi Asami usr.bin/sed \ 81944600413SJohn Birrell ${_aout_size} \ 8202799473bSSatoshi Asami usr.bin/soelim \ 8212799473bSSatoshi Asami usr.bin/symorder \ 8222799473bSSatoshi Asami usr.bin/touch \ 8232799473bSSatoshi Asami usr.bin/tr \ 8242799473bSSatoshi Asami usr.bin/true \ 8252799473bSSatoshi Asami usr.bin/uname \ 8262799473bSSatoshi Asami usr.bin/uuencode \ 8272799473bSSatoshi Asami usr.bin/vgrind \ 8282799473bSSatoshi Asami usr.bin/vi \ 8292799473bSSatoshi Asami usr.bin/wc \ 83047e0b716SBruce Evans usr.bin/xargs \ 8312799473bSSatoshi Asami usr.bin/yacc \ 8322799473bSSatoshi Asami usr.sbin/chown \ 8332799473bSSatoshi Asami usr.sbin/mtree \ 83478beb0d5SJordan K. Hubbard usr.sbin/zic \ 83578beb0d5SJordan K. Hubbard bin/sh 8361d86f959SBruce Evans cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} ${_DEPEND}; \ 8371d86f959SBruce Evans ${MAKE} ${BTMAKEFLAGS} all; \ 8381d86f959SBruce Evans ${MAKE} ${BTMAKEFLAGS} -B install ${CLEANDIR} ${OBJDIR} 83997fe7f47SJordan K. Hubbard.endfor 8401d86f959SBruce Evans.if !defined(NOGAMES) && exists(${.CURDIR}/games) 84127406826SBruce Evans cd ${DESTDIR}/usr/games; cp -p caesar strfile ${DESTDIR}/usr/bin 8421d86f959SBruce Evans.endif 84327406826SBruce Evans.for d in \ 84427406826SBruce Evans bin/sh \ 8451d86f959SBruce Evans ${_adventure} \ 8461d86f959SBruce Evans ${_hack} \ 8471d86f959SBruce Evans ${_phantasia} \ 84827406826SBruce Evans gnu/usr.bin/cc/cc_tools \ 84927406826SBruce Evans lib/libmytinfo \ 8501d86f959SBruce Evans ${_linux} \ 8511d86f959SBruce Evans ${_scrnmaps} \ 85227406826SBruce Evans sys/i386/boot/netboot 8531d86f959SBruce Evans cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} build-tools 85427406826SBruce Evans.endfor 8551d86f959SBruce Evans cd ${.CURDIR}/usr.bin/tn3270/tools; ${MAKE} ${BTMAKEFLAGS} all 85697fe7f47SJordan K. Hubbard 8571c9df6b4SBruce Evans.for __target in clean cleandepend cleandir depend obj 85897fe7f47SJordan K. Hubbard.for entry in ${SUBDIR} 85997fe7f47SJordan K. Hubbard${entry}.${__target}__D: .PHONY 860878739deSDmitrij Tejblum @if test -d ${.CURDIR}/${entry}.${MACHINE}; then \ 86197fe7f47SJordan K. Hubbard ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE}"; \ 86297fe7f47SJordan K. Hubbard edir=${entry}.${MACHINE}; \ 86397fe7f47SJordan K. Hubbard cd ${.CURDIR}/$${edir}; \ 86497fe7f47SJordan K. Hubbard else \ 86597fe7f47SJordan K. Hubbard ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ 86697fe7f47SJordan K. Hubbard edir=${entry}; \ 86797fe7f47SJordan K. Hubbard cd ${.CURDIR}/$${edir}; \ 86897fe7f47SJordan K. Hubbard fi; \ 86997fe7f47SJordan K. Hubbard ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 87097fe7f47SJordan K. Hubbard.endfor 87197fe7f47SJordan K. Hubbardpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 872f3c4dd0dSBruce Evans.endfor 8733540f0e1SJordan K. Hubbard 874cf763a57SJohn Birrell.endif 875cf763a57SJohn Birrell 876c3d9b0f0SRodney W. Grimes.include <bsd.subdir.mk> 877