Makefile.inc1 revision 52489
1130368Smlaier# 2130365Smlaier# $FreeBSD: head/Makefile.inc1 52489 1999-10-25 14:50:13Z julian $ 3130365Smlaier# 4130365Smlaier# Make command line options: 5130365Smlaier# -DCLOBBER will remove /usr/include 6130365Smlaier# -DMAKE_KERBEROS4 to build KerberosIV 7130365Smlaier# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 8130365Smlaier# -DNOCLEAN do not clean at all 9130365Smlaier# -DNOTOOLS do not rebuild any tools first 10130365Smlaier# -DNOCRYPT will prevent building of crypt versions 11130365Smlaier# -DNOPROFILE do not build profiled libraries 12130365Smlaier# -DNOSECURE do not go into secure subdir 13130365Smlaier# -DNOGAMES do not go into games subdir 14130365Smlaier# -DNOSHARE do not go into share subdir 15130365Smlaier# -DNOINFO do not make or install info files 16130365Smlaier# -DNOLIBC_R do not build libc_r. 17130365Smlaier# -DNO_FORTRAN do not build g77 and related libraries. 18130365Smlaier# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 19130365Smlaier 20130365Smlaier# 21130365Smlaier# The intended user-driven targets are: 22130365Smlaier# buildworld - rebuild *everything*, including glue to help do upgrades 23130365Smlaier# installworld- install everything built by "buildworld" 24130365Smlaier# update - convenient way to update your source tree (eg: sup/cvs) 25130365Smlaier# most - build user commands, no libraries or include files 26130365Smlaier# installmost - install user commands, no libraries or include files 27130365Smlaier# 28130365Smlaier# Standard targets (not defined here) are documented in the makefiles in 29130365Smlaier# /usr/share/mk. These include: 30130365Smlaier# obj depend all install clean cleandepend cleanobj 31130365Smlaier 32130365Smlaier# Put initial settings here. 33130365SmlaierSUBDIR= 34130365Smlaier 35130365Smlaier# We must do share/info early so that installation of info `dir' 36130365Smlaier# entries works correctly. Do it first since it is less likely to 37130365Smlaier# grow dependencies on include and lib than vice versa. 38130365Smlaier.if exists(${.CURDIR}/share/info) 39130365SmlaierSUBDIR+= share/info 40130365Smlaier.endif 41130365Smlaier 42130365Smlaier# We must do include and lib early so that the perl *.ph generation 43130365Smlaier# works correctly as it uses the header files installed by this. 44130365Smlaier.if exists(${.CURDIR}/include) 45130365SmlaierSUBDIR+= include 46130365Smlaier.endif 47130365Smlaier.if exists(${.CURDIR}/lib) 48130365SmlaierSUBDIR+= lib 49130365Smlaier.endif 50130365Smlaier 51130365Smlaier.if exists(${.CURDIR}/bin) 52130365SmlaierSUBDIR+= bin 53130365Smlaier.endif 54130365Smlaier.if exists(${.CURDIR}/games) && !defined(NOGAMES) 55130365SmlaierSUBDIR+= games 56130365Smlaier.endif 57130365Smlaier.if exists(${.CURDIR}/gnu) 58130365SmlaierSUBDIR+= gnu 59130365Smlaier.endif 60130365Smlaier.if exists(${.CURDIR}/kerberosIV) && exists(${.CURDIR}/crypto) && \ 61130365Smlaier !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 62130365SmlaierSUBDIR+= kerberosIV 63130365Smlaier.endif 64130365Smlaier.if exists(${.CURDIR}/libexec) 65130365SmlaierSUBDIR+= libexec 66130365Smlaier.endif 67130365Smlaier.if exists(${.CURDIR}/sbin) 68130365SmlaierSUBDIR+= sbin 69130365Smlaier.endif 70130365Smlaier.if exists(${.CURDIR}/share) && !defined(NOSHARE) 71130365SmlaierSUBDIR+= share 72130365Smlaier.endif 73130365Smlaier.if exists(${.CURDIR}/sys) 74130365SmlaierSUBDIR+= sys 75130365Smlaier.endif 76130365Smlaier.if exists(${.CURDIR}/usr.bin) 77130365SmlaierSUBDIR+= usr.bin 78130365Smlaier.endif 79130365Smlaier.if exists(${.CURDIR}/usr.sbin) 80130365SmlaierSUBDIR+= usr.sbin 81130365Smlaier.endif 82130365Smlaier.if exists(${.CURDIR}/secure) && !defined(NOCRYPT) && !defined(NOSECURE) 83130365SmlaierSUBDIR+= secure 84130365Smlaier.endif 85130365Smlaier 86130365Smlaier# etc must be last for "distribute" to work 87130365Smlaier.if exists(${.CURDIR}/etc) 88130365SmlaierSUBDIR+= etc 89130365Smlaier.endif 90130365Smlaier 91130365Smlaier# These are last, since it is nice to at least get the base system 92130365Smlaier# rebuilt before you do them. 93130365Smlaier.if defined(LOCAL_DIRS) 94130365Smlaier.for _DIR in ${LOCAL_DIRS} 95130365Smlaier.if exists(${.CURDIR}/${_DIR}) & exists(${.CURDIR}/${_DIR}/Makefile) 96130365SmlaierSUBDIR+= ${_DIR} 97130365Smlaier.endif 98130365Smlaier.endfor 99130365Smlaier.endif 100130365Smlaier 101130365SmlaierOBJDIR= obj 102130365Smlaier 103130365Smlaier.if defined(NOCLEAN) 104130365SmlaierCLEANDIR= 105130365Smlaier.else 106130365Smlaier.if defined(NOCLEANDIR) 107130365SmlaierCLEANDIR= clean cleandepend 108130365Smlaier.else 109130365SmlaierCLEANDIR= cleandir 110247830Sglebius.endif 111130365Smlaier.endif 112130365Smlaier 113130365Smlaier.if !defined(NOCLEAN) 114130365Smlaier_NODEPEND= true 115130365Smlaier.endif 116130365Smlaier.if defined(_NODEPEND) 117130365Smlaier_DEPEND= cleandepend 118130365Smlaier.else 119130365Smlaier_DEPEND= depend 120130365Smlaier.endif 121130365Smlaier 122130365SmlaierSUP?= cvsup 123130365SmlaierSUPFLAGS?= -g -L 2 -P - 124130365Smlaier 125130365Smlaier# 126130365Smlaier# While building tools for bootstrapping, we don't need to waste time on 127130365Smlaier# shared or profiled libraries, shared linkage, or documentation, except 128130365Smlaier# when the tools won't get cleaned we must use the defaults for shared 129130365Smlaier# libraries and shared linkage (and this doesn't waste time). 130130365Smlaier# XXX actually, we do need to waste time building shared libraries. 131130365Smlaier# 132130365Smlaier.if defined(NOCLEAN) 133130365SmlaierMK_FLAGS= -DWORLD -DNOINFO -DNOMAN -DNOPROFILE 134130365Smlaier.else 135130365SmlaierMK_FLAGS= -DWORLD -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED 136130365Smlaier.endif 137130365Smlaier 138130365Smlaier# 139130365Smlaier# If we're building a cross world, define MACHINE and MACHINE_ARCH for 140130365Smlaier# the version of make that we're using. 141130365Smlaier# 142130365Smlaier.if defined(TARGET) 143130365SmlaierCROSS_MAKE_FLAGS+=-DMACHINE=\"${TARGET}\" 144130365Smlaier.endif 145130365Smlaier.if defined(TARGET_ARCH) 146130365SmlaierCROSS_MAKE_FLAGS+=-DMACHINE_ARCH=\"${TARGET_ARCH}\" 147130365Smlaier.endif 148130365Smlaier 149130365Smlaier# 150130365Smlaier# Define the location of the temporary installation directory. Note that 151130365Smlaier# MAKEOBJDIRPREFIX normally isn't defined so if the current directory is 152130365Smlaier# /usr/src, then the world temporary directory is /usr/obj/usr/src/tmp. 153130365Smlaier# 154130365Smlaier# During the transition from aout to elf format on i386, MAKEOBJDIRPREFIX 155130365Smlaier# is set by the parent makefile (Makefile.inc0) to be /usr/obj/${OBJFORMAT} 156130365Smlaier# in order to keep aout and elf format files apart. 157130365Smlaier# 158130365Smlaier.if defined(MAKEOBJDIRPREFIX) 159130365SmlaierWORLDTMP= ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp 160130365Smlaier.else 161130365SmlaierWORLDTMP= /usr/obj${.CURDIR}/tmp 162130365Smlaier.endif 163130365Smlaier 164130365Smlaier# 165130365Smlaier# Define the PATH to the build tools. 166130365Smlaier# 167130365Smlaier# If not building tools, the PATH always points to the installed binaries. 168130365Smlaier# The NOTOOLS option assumes that in installed tools are good enough and that 169130365Smlaier# the user's PATH will locate to appropriate tools. This option is required 170130365Smlaier# for a cross-compiled build environment. 171130365Smlaier# 172130365Smlaier# If building tools, then the PATH includes the world temporary directories 173130365Smlaier# so that the bootstrapped tools are used as soon as they are built. The 174130365Smlaier# strict path is for use after all tools are supposed to have been 175130365Smlaier# bootstrapped. It doesn't allow any of the installed tools to be used. 176130365Smlaier# 177130365Smlaier.if defined(NOTOOLS) 178130365Smlaier# Default root of the tool tree 179130365SmlaierTOOLROOT?= 180130365Smlaier# Choose the PATH relative to the root of the tool tree 181130365SmlaierPATH= ${TOOLROOT}/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/sbin:${TOOLROOT}/usr/bin 182130365Smlaier.else 183130365SmlaierTOOLROOT= ${WORLDTMP} 184130365Smlaier.endif 185130365SmlaierSTRICTTMPPATH= ${TOOLROOT}/sbin:${TOOLROOT}/usr/sbin:${TOOLROOT}/bin:${TOOLROOT}/usr/bin 186130365SmlaierTMPPATH= ${STRICTTMPPATH}:${PATH} 187130365Smlaier 188130365Smlaier# XXX COMPILER_PATH is needed for finding cc1, ld and as 189130365Smlaier# XXX GCC_EXEC_PREFIX is for *crt.o. It is probably unnecessary now 190130365Smlaier# that LIBRARY_PATH is set. We still can't use -nostdlib, since gcc 191130365Smlaier# wouldn't link *crt.o or libgcc if it were used. 192130365Smlaier# XXX LD_LIBRARY_PATH is for ld.so. It is also used by ld, although we don't 193130365Smlaier# want that - all compile-time library paths should be resolved by gcc. 194130365Smlaier# It fails for set[ug]id executables (are any used?). 195130365SmlaierCOMPILER_ENV= BISON_SIMPLE=${TOOLROOT}/usr/share/misc/bison.simple \ 196130365Smlaier COMPILER_PATH=${TOOLROOT}/usr/libexec:${TOOLROOT}/usr/bin \ 197130365Smlaier GCC_EXEC_PREFIX=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib/ \ 198130365Smlaier LD_LIBRARY_PATH=${TOOLROOT}${SHLIBDIR} \ 199240233Sglebius LIBRARY_PATH=${WORLDTMP}${SHLIBDIR}:${WORLDTMP}/usr/lib 200130365Smlaier 201130365SmlaierBMAKEENV= ${COMPILER_ENV} NOEXTRADEPEND=t PATH=${TMPPATH} \ 202130365Smlaier OBJFORMAT_PATH=${TOOLROOT}/usr/libexec:/usr/libexec 203247830SglebiusXTMAKEENV= NOEXTRADEPEND=t 204130365Smlaier.if defined(TARGET) 205130365SmlaierXMAKEENV= PATH=${TMPPATH} 206130365Smlaier.else 207130365SmlaierXMAKEENV= PATH=${STRICTTMPPATH} 208130365Smlaier.endif 209130365SmlaierXMAKEENV+= ${COMPILER_ENV} \ 210130365Smlaier PERL5LIB=${DESTDIR}/usr/libdata/perl/5.00503 \ 211130365Smlaier OBJFORMAT_PATH=${TOOLROOT}/usr/libexec \ 212130365Smlaier CFLAGS="-nostdinc ${CFLAGS}" # XXX -nostdlib 213130365Smlaier 214130365Smlaier# used to compile and install 'make' in temporary build tree 215130365SmlaierMAKETMP= ${WORLDTMP}/make 216130365SmlaierIBMAKE= ${BMAKEENV} MAKEOBJDIR=${MAKETMP} ${MAKE} DESTDIR=${WORLDTMP} 217130365Smlaier 218130365Smlaier.if defined(NOTOOLS) 219130365Smlaier# cross tools make 220130365SmlaierXTMAKE= ${XTMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 221130365Smlaier# bootstrap make 222130365SmlaierBMAKE= ${BMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 223130365Smlaier# cross make used for compilation 224184205SdesXMAKE= ${XMAKEENV} ${MAKE} DESTDIR=${WORLDTMP} 225130365Smlaier# cross make used for final installation 226130365SmlaierIXMAKE= ${XMAKEENV} ${MAKE} 227130365Smlaier.else 228130365Smlaier# cross tools make 229130365SmlaierXTMAKE= ${XTMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 230130365Smlaier# bootstrap make 231130365SmlaierBMAKE= ${BMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 232130365Smlaier# cross make used for compilation 233130365SmlaierXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make DESTDIR=${WORLDTMP} 234130365Smlaier# cross make used for final installation 235130365SmlaierIXMAKE= ${XMAKEENV} ${WORLDTMP}/usr/bin/make 236130365Smlaier.endif 237130365Smlaier 238130365Smlaier# 239130365Smlaier# buildworld 240130365Smlaier# 241130365Smlaier# Attempt to rebuild the entire system, with reasonable chance of 242130365Smlaier# success, regardless of how old your existing system is. 243130365Smlaier# 244130365Smlaierbuildworld: check-objformat 245130365Smlaier.if !defined(NOCLEAN) 246130365Smlaier @echo 247130365Smlaier @echo "--------------------------------------------------------------" 248130365Smlaier @echo ">>> Cleaning up the temporary ${OBJFORMAT} build tree" 249130365Smlaier @echo "--------------------------------------------------------------" 250130365Smlaier mkdir -p ${WORLDTMP} 251130365Smlaier -chflags -R noschg ${WORLDTMP}/ 252130365Smlaier rm -rf ${WORLDTMP} 253130365Smlaier.endif 254130365Smlaier.if !defined(NOTOOLS) 255130365Smlaier @echo 256130365Smlaier @echo "--------------------------------------------------------------" 257130365Smlaier @echo ">>> Making make" 258130365Smlaier @echo "--------------------------------------------------------------" 259130365Smlaier mkdir -p ${WORLDTMP}/usr/bin ${MAKETMP} 260130365Smlaier ( \ 261130365Smlaier cd ${.CURDIR}/usr.bin/make; \ 262130365Smlaier MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 263130365Smlaier ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all CROSS_MAKE_FLAGS='${CROSS_MAKE_FLAGS}'; \ 264130365Smlaier ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} install; \ 265130365Smlaier ${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} clean \ 266130365Smlaier ) 267130365Smlaier @echo 268130365Smlaier @echo "--------------------------------------------------------------" 269130365Smlaier @echo ">>> Making mtree" 270130365Smlaier @echo "--------------------------------------------------------------" 271130365Smlaier mkdir -p ${WORLDTMP}/usr/sbin ${WORLDTMP}/mtree 272130365Smlaier ( \ 273130365Smlaier cd ${.CURDIR}/usr.sbin/mtree; \ 274130365Smlaier MAKEOBJDIRPREFIX=""; unset MAKEOBJDIRPREFIX; \ 275130365Smlaier export MAKEOBJDIR=${WORLDTMP}/mtree; \ 276130365Smlaier ${BMAKE} ${MK_FLAGS} all; \ 277130365Smlaier ${BMAKE} ${MK_FLAGS} -B install clean \ 278130365Smlaier ) 279130365Smlaier.endif 280130365Smlaier @echo 281130365Smlaier @echo "--------------------------------------------------------------" 282130365Smlaier @echo ">>> Making hierarchy" 283130365Smlaier @echo "--------------------------------------------------------------" 284130365Smlaier mkdir -p ${WORLDTMP} 285130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 hierarchy 286130365Smlaier.if !defined(NOCLEAN) 287130365Smlaier @echo 288130365Smlaier @echo "--------------------------------------------------------------" 289130365Smlaier @echo ">>> Cleaning up the ${OBJFORMAT} obj tree" 290130365Smlaier @echo "--------------------------------------------------------------" 291130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/} 292130365Smlaier.endif 293130365Smlaier @echo 294130365Smlaier @echo "--------------------------------------------------------------" 295130365Smlaier @echo ">>> Rebuilding the ${OBJFORMAT} obj tree" 296130365Smlaier @echo "--------------------------------------------------------------" 297130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 par-${OBJDIR} 298130365Smlaier.if defined(TARGET) 299130365Smlaier @echo 300130365Smlaier @echo "--------------------------------------------------------------" 301130365Smlaier @echo ">>> Rebuilding toolchain for ${TARGET} buildworld" 302130365Smlaier @echo "--------------------------------------------------------------" 303130365Smlaier cd ${.CURDIR}; ${XTMAKE} -f Makefile.inc1 cross-toolchain 304130365Smlaier.endif 305130365Smlaier.if !defined(NOTOOLS) && !defined(TARGET) 306130365Smlaier @echo 307130365Smlaier @echo "--------------------------------------------------------------" 308130365Smlaier @echo ">>> Rebuilding ${OBJFORMAT} bootstrap tools" 309130365Smlaier @echo "--------------------------------------------------------------" 310130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap 311130365Smlaier @echo 312130365Smlaier @echo "--------------------------------------------------------------" 313130365Smlaier @echo ">>> Rebuilding tools necessary to build the include files" 314130365Smlaier @echo "--------------------------------------------------------------" 315130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 include-tools 316130365Smlaier.endif 317130365Smlaier @echo 318130365Smlaier @echo "--------------------------------------------------------------" 319130365Smlaier @echo ">>> Rebuilding ${DESTDIR}/usr/include" 320130365Smlaier @echo "--------------------------------------------------------------" 321130365Smlaier cd ${.CURDIR}; SHARED=copies ${BMAKE} -f Makefile.inc1 includes 322130365Smlaier @echo 323130365Smlaier @echo "--------------------------------------------------------------" 324130365Smlaier @echo ">>> Rebuilding bootstrap libraries" 325130365Smlaier @echo "--------------------------------------------------------------" 326130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 bootstrap-libraries 327130365Smlaier.if !defined(NOTOOLS) 328130365Smlaier @echo 329130365Smlaier @echo "--------------------------------------------------------------" 330130365Smlaier @echo ">>> Rebuilding tools needed to build libraries" 331130365Smlaier @echo "--------------------------------------------------------------" 332130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 lib-tools 333130365Smlaier @echo 334130365Smlaier @echo "--------------------------------------------------------------" 335130365Smlaier @echo ">>> Rebuilding all other tools needed to build the ${OBJFORMAT} world" 336130365Smlaier @echo "--------------------------------------------------------------" 337130365Smlaier cd ${.CURDIR}; ${BMAKE} -f Makefile.inc1 build-tools 338130365Smlaier.endif 339130365Smlaier.if !defined(_NODEPEND) 340130365Smlaier @echo 341130365Smlaier @echo "--------------------------------------------------------------" 342130365Smlaier @echo ">>> Rebuilding dependencies" 343130365Smlaier @echo "--------------------------------------------------------------" 344130365Smlaier cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-depend 345130365Smlaier.endif 346130365Smlaier @echo 347130365Smlaier @echo "--------------------------------------------------------------" 348130365Smlaier @echo ">>> Building ${OBJFORMAT} libraries" 349130368Smlaier @echo "--------------------------------------------------------------" 350130368Smlaier cd ${.CURDIR}; ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries 351130365Smlaier @echo 352130365Smlaier @echo "--------------------------------------------------------------" 353130365Smlaier @echo ">>> Building everything.." 354130365Smlaier @echo "--------------------------------------------------------------" 355130365Smlaier cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all 356130365Smlaier 357130365Smlaiereverything: 358130365Smlaier @echo "--------------------------------------------------------------" 359130365Smlaier @echo ">>> Building everything.." 360130365Smlaier @echo "--------------------------------------------------------------" 361130365Smlaier cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 all 362130365Smlaier 363130365Smlaier# 364130365Smlaier# installworld 365130365Smlaier# 366130365Smlaier# Installs everything compiled by a 'buildworld'. 367130365Smlaier# 368130365Smlaierinstallworld: 369130365Smlaier cd ${.CURDIR}; ${IXMAKE} -f Makefile.inc1 reinstall 370130365Smlaier 371130365Smlaier# 372130365Smlaier# reinstall 373130365Smlaier# 374130365Smlaier# If you have a build server, you can NFS mount the source and obj directories 375130365Smlaier# and do a 'make reinstall' on the *client* to install new binaries from the 376130365Smlaier# most recent server build. 377130365Smlaier# 378130365Smlaierreinstall: 379130365Smlaier @echo "--------------------------------------------------------------" 380130365Smlaier @echo ">>> Making hierarchy" 381130365Smlaier @echo "--------------------------------------------------------------" 382130365Smlaier cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 383130365Smlaier @echo 384130365Smlaier @echo "--------------------------------------------------------------" 385130365Smlaier @echo ">>> Installing everything.." 386130365Smlaier @echo "--------------------------------------------------------------" 387130365Smlaier cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 388130365Smlaier.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" && !defined(DESTDIR) 389130365Smlaier @echo 390130365Smlaier @echo "--------------------------------------------------------------" 391130365Smlaier @echo ">>> Re-scanning the shared libraries.." 392240646Sglebius @echo "--------------------------------------------------------------" 393130365Smlaier -cd ${.CURDIR}; /sbin/ldconfig -R 394130365Smlaier.endif 395130365Smlaier.if !defined(NOMAN) 396240646Sglebius @echo 397130365Smlaier @echo "--------------------------------------------------------------" 398130365Smlaier @echo ">>> Rebuilding man page indices" 399130365Smlaier @echo "--------------------------------------------------------------" 400247830Sglebius cd ${.CURDIR}/share/man; ${MAKE} makedb 401130365Smlaier.endif 402130365Smlaier 403130365Smlaier# 404130365Smlaier# update 405130365Smlaier# 406130365Smlaier# Update the source tree, by running sup and/or running cvs to update to the 407130365Smlaier# latest copy. 408130365Smlaier# 409130365Smlaierupdate: 410130365Smlaier.if defined(SUP_UPDATE) 411130365Smlaier @echo "--------------------------------------------------------------" 412130365Smlaier @echo ">>> Running ${SUP}" 413130365Smlaier @echo "--------------------------------------------------------------" 414130365Smlaier @${SUP} ${SUPFLAGS} ${SUPFILE} 415130365Smlaier.if defined(SUPFILE1) 416130365Smlaier @${SUP} ${SUPFLAGS} ${SUPFILE1} 417130365Smlaier.endif 418130365Smlaier.if defined(SUPFILE2) 419130365Smlaier @${SUP} ${SUPFLAGS} ${SUPFILE2} 420130365Smlaier.endif 421130365Smlaier.if defined(PORTSSUPFILE) 422130365Smlaier @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 423130365Smlaier.endif 424130365Smlaier.endif 425130365Smlaier.if defined(CVS_UPDATE) 426130365Smlaier @echo "--------------------------------------------------------------" 427130365Smlaier @echo ">>> Updating ${.CURDIR} from cvs repository" ${CVSROOT} 428130365Smlaier @echo "--------------------------------------------------------------" 429130365Smlaier cd ${.CURDIR}; cvs -q update -P -d 430130365Smlaier.endif 431130365Smlaier 432130365Smlaier# 433130365Smlaier# most 434130365Smlaier# 435130365Smlaier# Build most of the user binaries on the existing system libs and includes. 436130365Smlaier# 437130365Smlaiermost: 438130365Smlaier @echo "--------------------------------------------------------------" 439130365Smlaier @echo ">>> Building programs only" 440130365Smlaier @echo "--------------------------------------------------------------" 441130365Smlaier cd ${.CURDIR}/bin; ${MAKE} all 442130365Smlaier cd ${.CURDIR}/sbin; ${MAKE} all 443130365Smlaier cd ${.CURDIR}/libexec; ${MAKE} all 444130365Smlaier cd ${.CURDIR}/usr.bin; ${MAKE} all 445130365Smlaier cd ${.CURDIR}/usr.sbin; ${MAKE} all 446130365Smlaier cd ${.CURDIR}/gnu/libexec; ${MAKE} all 447130365Smlaier cd ${.CURDIR}/gnu/usr.bin; ${MAKE} all 448130365Smlaier cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} all 449130365Smlaier#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 450130365Smlaier# cd ${.CURDIR}/kerberosIV; ${MAKE} most 451130365Smlaier#.endif 452130365Smlaier#.if !defined(NOSECURE) && !defined(NOCRYPT) 453184214Sdes# cd ${.CURDIR}/secure; ${MAKE} most 454240646Sglebius#.endif 455130365Smlaier 456130365Smlaier# 457130365Smlaier# installmost 458130365Smlaier# 459130365Smlaier# Install the binaries built by the 'most' target. This does not include 460130365Smlaier# libraries or include files. 461130365Smlaier# 462184214Sdesinstallmost: 463240646Sglebius @echo "--------------------------------------------------------------" 464130365Smlaier @echo ">>> Installing programs only" 465130365Smlaier @echo "--------------------------------------------------------------" 466130365Smlaier cd ${.CURDIR}/bin; ${MAKE} install 467130365Smlaier cd ${.CURDIR}/sbin; ${MAKE} install 468130365Smlaier cd ${.CURDIR}/libexec; ${MAKE} install 469130365Smlaier cd ${.CURDIR}/usr.bin; ${MAKE} install 470184214Sdes cd ${.CURDIR}/usr.sbin; ${MAKE} install 471240646Sglebius cd ${.CURDIR}/gnu/libexec; ${MAKE} install 472130365Smlaier cd ${.CURDIR}/gnu/usr.bin; ${MAKE} install 473130365Smlaier cd ${.CURDIR}/gnu/usr.sbin; ${MAKE} install 474130365Smlaier#.if defined(MAKE_KERBEROS4) && !defined(NOCRYPT) 475130365Smlaier# cd ${.CURDIR}/kerberosIV; ${MAKE} installmost 476130365Smlaier#.endif 477130365Smlaier#.if !defined(NOSECURE) && !defined(NOCRYPT) 478130365Smlaier# cd ${.CURDIR}/secure; ${MAKE} installmost 479130365Smlaier#.endif 480130365Smlaier 481130365Smlaier# 482130365Smlaier# ------------------------------------------------------------------------ 483130365Smlaier# 484130365Smlaier# From here onwards are utility targets used by the 'make world' and 485130365Smlaier# related targets. If your 'world' breaks, you may like to try to fix 486130365Smlaier# the problem and manually run the following targets to attempt to 487130365Smlaier# complete the build. Beware, this is *not* guaranteed to work, you 488130368Smlaier# need to have a pretty good grip on the current state of the system 489130365Smlaier# to attempt to manually finish it. If in doubt, 'make world' again. 490130365Smlaier# 491130365Smlaier 492130365Smlaier# 493130365Smlaier# hierarchy - ensure that all the needed directories are present 494130365Smlaier# 495130365Smlaierhierarchy: 496130365Smlaier cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 497130365Smlaier 498130365Smlaier# 499130365Smlaier# bootstrap - [re]build tools needed to run the actual build, this includes 500130365Smlaier# tools needed by 'make depend', as some tools are needed to generate source 501130365Smlaier# for the dependency information to be gathered from. 502130365Smlaier# 503130365Smlaierbootstrap: 504130365Smlaier.if defined(DESTDIR) 505130365Smlaier rm -f ${DESTDIR}/usr/src/sys 506130368Smlaier ln -s ${.CURDIR}/sys ${DESTDIR}/usr/src 507130365Smlaier cd ${.CURDIR}/include; ${MAKE} all 508130365Smlaier cd ${.CURDIR}/include; ${MAKE} beforeinstall 509130365Smlaier.endif 510130365Smlaier cd ${.CURDIR}/usr.bin/make; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 511130365Smlaier ${MAKE} ${MK_FLAGS} all CROSS_MAKE_FLAGS='${CROSS_MAKE_FLAGS}'; \ 512130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 513130365Smlaier cd ${.CURDIR}/usr.bin/xinstall; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 514130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 515130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 516130365Smlaier cd ${.CURDIR}/usr.bin/yacc; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 517130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 518130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 519130365Smlaier cd ${.CURDIR}/usr.bin/lex; ${MAKE} bootstrap; \ 520130365Smlaier ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 521130365Smlaier ${MAKE} ${MK_FLAGS} -DNOLIB all; \ 522130365Smlaier ${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} 523130365Smlaier cd ${.CURDIR}/usr.bin/lex; ${MAKE} ${OBJDIR} 524130365Smlaier cd ${.CURDIR}/usr.sbin/mtree; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 525130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 526130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 527130365Smlaier.if defined(DESTDIR) 528130368Smlaier cd ${.CURDIR}/include && ${MAKE} copies 529130365Smlaier.endif 530130365Smlaier 531130365Smlaier# 532130365Smlaier# include-tools - generally the same as 'bootstrap', except that it's for 533130365Smlaier# things that are specifically needed to generate include files. 534130365Smlaier# 535130365Smlaier# XXX should be merged with bootstrap, it's not worth keeeping them separate. 536130365Smlaier# Well, maybe it is now. We force 'cleandepend' here to avoid dependencies 537130365Smlaier# on cleaned away headers in ${WORLDTMP}. 538130365Smlaier# 539130365Smlaierinclude-tools: 540130365Smlaier.for d in usr.bin/compile_et usr.bin/rpcgen 541130365Smlaier cd ${.CURDIR}/$d; ${MAKE} cleandepend; \ 542130365Smlaier ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 543130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 544130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 545184205Sdes.endfor 546130365Smlaier 547184205Sdes# 548130365Smlaier# includes - possibly generate and install the include files. 549184205Sdes# 550130365Smlaierincludes: 551184205Sdes.if defined(CLOBBER) 552184205Sdes rm -rf ${DESTDIR}/usr/include/* 553130365Smlaier mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 554130365Smlaier -p ${DESTDIR}/usr/include 555130365Smlaier.endif 556130365Smlaier cd ${.CURDIR}/include; ${MAKE} -B all install 557130365Smlaier cd ${.CURDIR}/gnu/include; ${MAKE} install 558130365Smlaier cd ${.CURDIR}/gnu/lib/libmp; ${MAKE} beforeinstall 559130365Smlaier cd ${.CURDIR}/gnu/lib/libobjc; ${MAKE} beforeinstall 560130365Smlaier cd ${.CURDIR}/gnu/lib/libreadline; ${MAKE} beforeinstall 561130365Smlaier cd ${.CURDIR}/gnu/lib/libregex; ${MAKE} beforeinstall 562130365Smlaier cd ${.CURDIR}/gnu/lib/libstdc++; ${MAKE} beforeinstall 563130365Smlaier cd ${.CURDIR}/gnu/lib/libdialog; ${MAKE} beforeinstall 564130365Smlaier cd ${.CURDIR}/gnu/lib/libgmp; ${MAKE} beforeinstall 565130365Smlaier cd ${.CURDIR}/gnu/usr.bin/cc/cc1plus; ${MAKE} beforeinstall 566130365Smlaier.if exists(${.CURDIR}/secure) && !defined(NOCRYPT) 567130365Smlaier cd ${.CURDIR}/secure/lib/libdes; ${MAKE} beforeinstall 568130365Smlaier.endif 569130365Smlaier.if exists(${.CURDIR}/kerberosIV) && !defined(NOCRYPT) && \ 570130365Smlaier defined(MAKE_KERBEROS4) 571130365Smlaier cd ${.CURDIR}/kerberosIV/lib/libacl; ${MAKE} beforeinstall 572130368Smlaier cd ${.CURDIR}/kerberosIV/lib/libkadm; ${MAKE} beforeinstall 573130365Smlaier cd ${.CURDIR}/kerberosIV/lib/libkafs; ${MAKE} beforeinstall 574130365Smlaier cd ${.CURDIR}/kerberosIV/lib/libkdb; ${MAKE} beforeinstall 575130365Smlaier cd ${.CURDIR}/kerberosIV/lib/libkrb; ${MAKE} beforeinstall 576130365Smlaier cd ${.CURDIR}/kerberosIV/lib/libtelnet; ${MAKE} beforeinstall 577130365Smlaier.else 578130365Smlaier cd ${.CURDIR}/lib/libtelnet; ${MAKE} beforeinstall 579130365Smlaier.endif 580130365Smlaier.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) 581130365Smlaier cd ${.CURDIR}/lib/csu/${MACHINE_ARCH}; ${MAKE} beforeinstall 582130365Smlaier.endif 583130365Smlaier cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall 584130365Smlaier cd ${.CURDIR}/lib/libatm; ${MAKE} beforeinstall 585130365Smlaier cd ${.CURDIR}/lib/libdevstat; ${MAKE} beforeinstall 586130365Smlaier cd ${.CURDIR}/lib/libc; ${MAKE} beforeinstall 587130365Smlaier cd ${.CURDIR}/lib/libcalendar; ${MAKE} beforeinstall 588130365Smlaier cd ${.CURDIR}/lib/libcam; ${MAKE} beforeinstall 589130365Smlaier cd ${.CURDIR}/lib/libdisk; ${MAKE} beforeinstall 590130365Smlaier cd ${.CURDIR}/lib/libncp; ${MAKE} beforeinstall 591130365Smlaier cd ${.CURDIR}/lib/libncurses; ${MAKE} beforeinstall 592130365Smlaier cd ${.CURDIR}/lib/libnetgraph; ${MAKE} beforeinstall 593130365Smlaier cd ${.CURDIR}/lib/libedit; ${MAKE} beforeinstall 594130365Smlaier cd ${.CURDIR}/lib/libftpio; ${MAKE} beforeinstall 595130365Smlaier cd ${.CURDIR}/lib/libkvm; ${MAKE} beforeinstall 596130365Smlaier cd ${.CURDIR}/lib/libmd; ${MAKE} beforeinstall 597130365Smlaier.if !defined(WANT_CSRG_LIBM) 598130365Smlaier cd ${.CURDIR}/lib/msun; ${MAKE} beforeinstall 599130365Smlaier.endif 600130365Smlaier cd ${.CURDIR}/lib/libopie; ${MAKE} beforeinstall 601130365Smlaier cd ${.CURDIR}/lib/libpam/libpam; ${MAKE} beforeinstall 602130365Smlaier cd ${.CURDIR}/lib/libpcap; ${MAKE} beforeinstall 603130365Smlaier cd ${.CURDIR}/lib/libradius; ${MAKE} beforeinstall 604130365Smlaier cd ${.CURDIR}/lib/librpcsvc; ${MAKE} beforeinstall 605130368Smlaier cd ${.CURDIR}/lib/libskey; ${MAKE} beforeinstall 606130365Smlaier cd ${.CURDIR}/lib/libstand; ${MAKE} beforeinstall 607130365Smlaier cd ${.CURDIR}/lib/libtacplus; ${MAKE} beforeinstall 608130365Smlaier cd ${.CURDIR}/lib/libcom_err; ${MAKE} beforeinstall 609130365Smlaier cd ${.CURDIR}/lib/libss; ${MAKE} -B hdrs beforeinstall 610130365Smlaier cd ${.CURDIR}/lib/libutil; ${MAKE} beforeinstall 611130365Smlaier cd ${.CURDIR}/lib/libvgl; ${MAKE} beforeinstall 612130365Smlaier cd ${.CURDIR}/lib/libwrap; ${MAKE} beforeinstall 613130365Smlaier cd ${.CURDIR}/lib/libz; ${MAKE} beforeinstall 614130365Smlaier cd ${.CURDIR}/usr.bin/lex; ${MAKE} beforeinstall 615130365Smlaier 616130365Smlaier# 617130365Smlaier# Declare tools if they are not required on all architectures. 618130365Smlaier# 619130368Smlaier.if ${MACHINE_ARCH} == "i386" 620130365Smlaier# aout tools: 621130365Smlaier_aout_ar = usr.bin/ar 622130365Smlaier_aout_as = gnu/usr.bin/as 623130365Smlaier_aout_ld = gnu/usr.bin/ld 624130368Smlaier_aout_nm = usr.bin/nm 625130365Smlaier_aout_ranlib = usr.bin/ranlib 626130365Smlaier_aout_size = usr.bin/size 627184205Sdes_aout_strip = usr.bin/strip 628130365Smlaier# boot block/loader tools: 629184205Sdes_btxld = usr.sbin/btxld 630130365Smlaier.endif 631184205Sdes 632184205Sdes# 633184205Sdes# lib-tools - build tools to compile and install the libraries. 634130365Smlaier# 635130365Smlaier# XXX gperf is required for cc 636130365Smlaier# XXX a new ld and tsort is required for cc 637130365Smlaierlib-tools: 638130365Smlaier.for d in \ 639130365Smlaier gnu/usr.bin/gperf \ 640130365Smlaier ${_aout_ld} \ 641130365Smlaier usr.bin/tsort \ 642130365Smlaier ${_aout_as} \ 643130365Smlaier gnu/usr.bin/bison \ 644130365Smlaier gnu/usr.bin/cc \ 645130365Smlaier gnu/lib/libgcc \ 646130365Smlaier ${_aout_ar} \ 647130365Smlaier usr.bin/env \ 648130365Smlaier usr.bin/lex/lib \ 649130365Smlaier usr.bin/mk_cmds \ 650130365Smlaier ${_aout_nm} \ 651130365Smlaier ${_aout_ranlib} \ 652130365Smlaier ${_aout_strip} \ 653130365Smlaier gnu/usr.bin/binutils \ 654130365Smlaier usr.bin/uudecode \ 655130365Smlaier usr.bin/objformat 656130365Smlaier cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 657130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 658130365Smlaier ${MAKE} ${MK_FLAGS} -B install; \ 659130365Smlaier ${MAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR} 660130365Smlaier.endfor 661130365Smlaier 662130365Smlaier# 663130365Smlaier# We have to know too much about ordering and subdirs in the lib trees: 664130365Smlaier# 665130365Smlaier# To satisfy shared library linkage when only the libraries being built 666130365Smlaier# are visible: 667130365Smlaier# 668130365Smlaier# csu must be built before all shared libaries for ELF. 669130365Smlaier# libcom_err must be built before libss and libkrb. 670130365Smlaier# libcrypt must be built before libkrb and libskey. 671171173Smlaier# libdes must be built before libpam. 672130365Smlaier# libkrb must be built before libpam. 673130365Smlaier# libm must be built before libstdc++. 674130368Smlaier# libmd must be built before libatm, libcrypt, libopie, libradius, libskey, 675130368Smlaier# and libtacplus. 676130365Smlaier# libncurses must be built before libdialog, libedit and libreadline. 677130365Smlaier# libradius must be built before libpam. 678130365Smlaier# libskey must be built before libpam. 679130365Smlaier# libtacplus must be built before libpam. 680130365Smlaier# 681130365Smlaier# Some libraries are built conditionally and/or are in inconsistently 682130365Smlaier# named directories: 683130365Smlaier# 684130365Smlaier.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}.pcc) 685171173Smlaier_csu=lib/csu/${MACHINE_ARCH}.pcc 686171173Smlaier.elif ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "elf" 687130365Smlaier_csu=lib/csu/i386-elf 688130365Smlaier.else 689130365Smlaier_csu=lib/csu/${MACHINE_ARCH} 690130365Smlaier.endif 691130365Smlaier 692130365Smlaier.if !defined(NOSECURE) && !defined(NOCRYPT) 693130365Smlaier_libcrypt= lib/libcrypt secure/lib/libcrypt 694130365Smlaier_secure_lib= secure/lib 695130365Smlaier.else 696130365Smlaier_libcrypt= lib/libcrypt 697130365Smlaier.endif 698130365Smlaier 699130365Smlaier.if !defined(NOCRYPT) && defined(MAKE_KERBEROS4) 700130365Smlaier_kerberosIV_lib=kerberosIV/lib 701130365Smlaier.endif 702130365Smlaier 703130365Smlaier.if defined(WANT_CSRG_LIBM) 704130365Smlaier_libm= lib/libm 705130365Smlaier.else 706130365Smlaier_libm= lib/msun 707130365Smlaier.endif 708130365Smlaier 709130365Smlaier.if !defined(NOPERL) 710130365Smlaier_libperl= gnu/usr.bin/perl/libperl 711130365Smlaier.endif 712130365Smlaier 713130365Smlaier# 714130365Smlaier# bootstrap-libraries - build just enough libraries for the bootstrap 715130365Smlaier# tools, and install them under ${WORLDTMP}. 716130365Smlaier# 717130365Smlaier# Build csu early so that some tools get linked to the new 718130365Smlaier# version (too late for the main tools, however). Then build the 719130365Smlaier# necessary prerequisite libraries. 720130365Smlaier# 721130365Smlaier# This is mostly wrong. The build tools must run on the host system, 722130365Smlaier# so they should use host libraries. We depend on the target being 723130365Smlaier# similar enough to the host for new target libraries to work on the 724130365Smlaier# host. 725130365Smlaier# 726130365Smlaierbootstrap-libraries: 727130365Smlaier.for _lib in ${_csu} lib/libc lib/libncurses \ 728130365Smlaier gnu/lib/libregex gnu/lib/libreadline \ 729130365Smlaier lib/libedit ${_libm} \ 730130365Smlaier lib/libmd lib/libcrypt lib/libutil lib/libz usr.bin/lex/lib \ 731130365Smlaier ${_libperl} 732130365Smlaier.if exists(${.CURDIR}/${_lib}) 733130365Smlaier cd ${.CURDIR}/${_lib}; \ 734130365Smlaier ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 735130365Smlaier ${MAKE} ${MK_FLAGS} all; \ 736130365Smlaier ${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR} 737130365Smlaier.endif 738130365Smlaier.endfor 739130368Smlaier 740130368Smlaier# 741130365Smlaier# libraries - build all libraries, and install them under ${DESTDIR}. 742130365Smlaier# 743130365Smlaier# The ordering is not as special as for bootstrap-libraries. Build 744130365Smlaier# the prerequisites first, then build almost everything else in 745130365Smlaier# alphabetical order. 746130365Smlaier# 747130365Smlaierlibraries: 748130365Smlaier.for _lib in ${_csu} lib/libcom_err ${_libm} lib/libmd ${_libcrypt} \ 749130365Smlaier lib/libradius lib/libskey lib/libtacplus \ 750130365Smlaier ${_secure_lib} ${_kerberosIV_lib} \ 751130365Smlaier gnu/lib ${_libperl} lib usr.bin/lex/lib \ 752130365Smlaier usr.sbin/pcvt/keycap 753130365Smlaier.if exists(${.CURDIR}/${_lib}) 754130365Smlaier cd ${.CURDIR}/${_lib}; ${MAKE} all; ${MAKE} -B install 755130365Smlaier.endif 756130365Smlaier.endfor 757130365Smlaier 758130365Smlaier# 759130365Smlaier# Exclude unused tools from build-tools. 760247830Sglebius# 761130365Smlaier.if !defined(NOGAMES) && exists(${.CURDIR}/games) 762130365Smlaier_adventure= games/adventure 763130365Smlaier_caesar= games/caesar 764130365Smlaier_hack= games/hack 765130365Smlaier_phantasia= games/phantasia 766130365Smlaier_strfile= games/fortune/strfile 767130365Smlaier.endif 768130365Smlaier.if !defined(NOPERL) 769130365Smlaier_perl= gnu/usr.bin/perl/miniperl 770130365Smlaier.endif 771130365Smlaier.if !defined(NOSHARE) && exists(${.CURDIR}/share) 772130365Smlaier_scrnmaps= share/syscons/scrnmaps 773130365Smlaier.endif 774130365Smlaier.if ${MACHINE_ARCH} == alpha 775130365Smlaier_elf2exe= usr.sbin/elf2exe 776130365Smlaier.endif 777130365Smlaier.if ${MACHINE_ARCH} == i386 778130365Smlaier_kldlinux= sys/modules/linux 779130365Smlaier.endif 780130365Smlaier.if ${OBJFORMAT} == "aout" 781130365Smlaier_netboot= sys/${MACHINE}/boot/netboot 782130365Smlaier.endif 783130365Smlaier 784130365SmlaierBTMAKEFLAGS= ${MK_FLAGS} -D_BUILD_TOOLS 785130365Smlaier 786130365Smlaier# 787130365Smlaier# build-tools - build and install any other tools needed to complete the 788130365Smlaier# compile and install. 789130365Smlaier# ifdef stale 790130365Smlaier# bc and cpp are required to build groff. Otherwise, the order here is 791130365Smlaier# mostly historical, i.e., bogus. 792130365Smlaier# chmod is used to build gcc's tmpmultilib[2] at obscure times. 793130365Smlaier# endif stale 794130365Smlaier# XXX uname is a bug - the target should not depend on the host. 795130365Smlaier# 796130365Smlaierbuild-tools: 797130365Smlaier.for d in \ 798130365Smlaier bin/cat \ 799130365Smlaier bin/chmod \ 800130365Smlaier bin/cp \ 801130365Smlaier bin/date \ 802130365Smlaier bin/dd \ 803130365Smlaier bin/echo \ 804130365Smlaier bin/expr \ 805130365Smlaier bin/hostname \ 806130365Smlaier bin/ln \ 807130365Smlaier bin/ls \ 808130365Smlaier bin/mkdir \ 809130365Smlaier bin/mv \ 810130365Smlaier bin/rm \ 811130365Smlaier bin/test \ 812130365Smlaier ${_caesar} \ 813130365Smlaier ${_strfile} \ 814130365Smlaier gnu/usr.bin/awk \ 815130365Smlaier gnu/usr.bin/bc \ 816130365Smlaier gnu/usr.bin/grep \ 817130365Smlaier gnu/usr.bin/groff \ 818130365Smlaier gnu/usr.bin/gzip \ 819130365Smlaier gnu/usr.bin/man/makewhatis \ 820130365Smlaier gnu/usr.bin/patch \ 821130365Smlaier ${_perl} \ 822130365Smlaier gnu/usr.bin/sort \ 823130365Smlaier gnu/usr.bin/texinfo \ 824130365Smlaier usr.bin/basename \ 825130365Smlaier usr.bin/cap_mkdb \ 826130365Smlaier usr.bin/chflags \ 827130365Smlaier usr.bin/cmp \ 828130365Smlaier usr.bin/col \ 829130365Smlaier usr.bin/colldef \ 830130365Smlaier usr.bin/cpp \ 831130365Smlaier usr.bin/expand \ 832130365Smlaier usr.bin/file2c \ 833130365Smlaier usr.bin/find \ 834130365Smlaier usr.bin/gencat \ 835130365Smlaier usr.bin/gensetdefs \ 836130365Smlaier usr.bin/id \ 837130365Smlaier usr.bin/join \ 838130365Smlaier usr.bin/lorder \ 839130365Smlaier usr.bin/m4 \ 840130365Smlaier usr.bin/mkdep \ 841130365Smlaier usr.bin/mklocale \ 842130365Smlaier usr.bin/paste \ 843130365Smlaier usr.bin/printf \ 844130365Smlaier usr.bin/sed \ 845130365Smlaier ${_aout_size} \ 846130365Smlaier usr.bin/soelim \ 847130365Smlaier usr.bin/symorder \ 848130365Smlaier usr.bin/touch \ 849130365Smlaier usr.bin/tr \ 850130365Smlaier usr.bin/true \ 851130365Smlaier usr.bin/uname \ 852130365Smlaier usr.bin/uuencode \ 853130365Smlaier usr.bin/vgrind \ 854130365Smlaier usr.bin/vi \ 855130365Smlaier usr.bin/wc \ 856130365Smlaier usr.bin/xargs \ 857130365Smlaier usr.bin/yacc \ 858130365Smlaier ${_btxld} \ 859130365Smlaier usr.sbin/chown \ 860130365Smlaier ${_elf2exe} \ 861130365Smlaier usr.sbin/mtree \ 862130365Smlaier usr.sbin/zic \ 863130365Smlaier bin/sh 864130365Smlaier cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} ${_DEPEND}; \ 865130365Smlaier ${MAKE} ${BTMAKEFLAGS} all; \ 866130365Smlaier ${MAKE} ${BTMAKEFLAGS} -B install ${CLEANDIR} ${OBJDIR} 867130365Smlaier.endfor 868130365Smlaier.if !defined(NOGAMES) && exists(${.CURDIR}/games) 869130365Smlaier cd ${DESTDIR}/usr/games; cp -p caesar strfile ${DESTDIR}/usr/bin 870130365Smlaier.endif 871130365Smlaier.for d in \ 872130365Smlaier bin/sh \ 873130365Smlaier ${_adventure} \ 874130365Smlaier ${_hack} \ 875130365Smlaier ${_phantasia} \ 876130365Smlaier gnu/usr.bin/cc/cc_tools \ 877130365Smlaier ${_linux} \ 878130365Smlaier ${_kldlinux} \ 879130365Smlaier ${_scrnmaps} \ 880130365Smlaier ${_netboot} 881130365Smlaier cd ${.CURDIR}/$d; ${MAKE} ${BTMAKEFLAGS} build-tools 882130365Smlaier.endfor 883130365Smlaier 884130365Smlaier# 885130365Smlaier# Build aout versions of things that provide legacy support when all the 886130365Smlaier# rest of the world is elf. 887130365Smlaier# 888130365Smlaierlegacy-build: 889130365Smlaier.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" 890130365Smlaier @echo 891130365Smlaier @echo "--------------------------------------------------------------" 892130365Smlaier @echo ">>> Making hierarchy" 893130365Smlaier @echo "--------------------------------------------------------------" 894130365Smlaier mkdir -p ${WORLDTMP} 895130365Smlaier cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 hierarchy 896130365Smlaier @echo 897130365Smlaier @echo "--------------------------------------------------------------" 898130365Smlaier @echo ">>> Rebuilding the ${OBJFORMAT} obj tree" 899130365Smlaier @echo "--------------------------------------------------------------" 900130365Smlaier cd ${.CURDIR}; ${XMAKE} -f Makefile.inc1 par-${OBJDIR} 901130365Smlaier @echo 902130365Smlaier @echo "--------------------------------------------------------------" 903130365Smlaier @echo ">>> Rebuilding ${DESTDIR}/usr/include" 904130365Smlaier @echo "--------------------------------------------------------------" 905130365Smlaier cd ${.CURDIR}; SHARED=copies ${XMAKE} -f Makefile.inc1 includes 906130365Smlaier @echo 907130365Smlaier @echo "--------------------------------------------------------------" 908130365Smlaier @echo ">>> Building legacy libraries" 909130365Smlaier @echo "--------------------------------------------------------------" 910130365Smlaier cd ${.CURDIR}; \ 911130365Smlaier ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 bootstrap-libraries 912130365Smlaier cd ${.CURDIR}; \ 913130365Smlaier ${XMAKE} -DNOINFO -DNOMAN -f Makefile.inc1 libraries 914130365Smlaier @echo 915130365Smlaier @echo "--------------------------------------------------------------" 916130365Smlaier @echo ">>> Building legacy rtld" 917130365Smlaier @echo "--------------------------------------------------------------" 918130365Smlaier cd ${.CURDIR}/libexec/rtld-aout; \ 919130365Smlaier ${XMAKE} -DNOMAN depend; ${XMAKE} -DNOMAN all; 920130365Smlaier @echo 921130365Smlaier @echo "--------------------------------------------------------------" 922130365Smlaier @echo ">>> Building legacy boot" 923130365Smlaier @echo "--------------------------------------------------------------" 924130365Smlaier cd ${.CURDIR}/sys/${MACHINE}/boot && \ 925130365Smlaier ${XMAKE} -DNOMAN -B obj depend; ${XMAKE} -DNOMAN all; 926130365Smlaier.endif 927130365Smlaier 928130365Smlaier# 929130365Smlaier# Install aout versions of things that provide legacy support when all the 930130365Smlaier# rest of the world is elf. 931130365Smlaier# 932130365Smlaierlegacy-install: 933130365Smlaier.if ${MACHINE_ARCH} == "i386" && ${OBJFORMAT} == "aout" 934130365Smlaier @echo 935130365Smlaier @echo "--------------------------------------------------------------" 936130365Smlaier @echo ">>> Installing legacy libraries" 937130365Smlaier @echo "--------------------------------------------------------------" 938130365Smlaier cd ${.CURDIR}/lib; ${MAKE} -B -DNOMAN -DNOINFO install 939130365Smlaier cd ${.CURDIR}/gnu/lib; ${MAKE} -B -DNOMAN -DNOINFO install 940130365Smlaier cd ${.CURDIR}/gnu/lib/libgcc; \ 941130365Smlaier ${MAKE} -B -DNOMAN -DNOINFO install 942130365Smlaier cd ${.CURDIR}/usr.bin/lex/lib; \ 943130365Smlaier ${MAKE} -B -DNOMAN -DNOINFO install 944130365Smlaier cd ${.CURDIR}/usr.sbin/pcvt/keycap; \ 945130365Smlaier ${MAKE} -B -DNOMAN -DNOINFO install 946130365Smlaier.if exists(${.CURDIR}/secure/lib) && !defined(NOCRYPT) && !defined(NOSECURE) 947130365Smlaier cd ${.CURDIR}/secure/lib; ${MAKE} -B -DNOMAN -DNOINFO install 948130365Smlaier.endif 949130365Smlaier.if exists(${.CURDIR}/kerberosIV/lib) && !defined(NOCRYPT) && \ 950130365Smlaier defined(MAKE_KERBEROS4) 951130365Smlaier cd ${.CURDIR}/kerberosIV/lib; ${MAKE} -B -DNOMAN -DNOINFO install 952130365Smlaier.endif 953130365Smlaier @echo 954130365Smlaier @echo "--------------------------------------------------------------" 955130365Smlaier @echo ">>> Installing legacy rtld" 956130365Smlaier @echo "--------------------------------------------------------------" 957130365Smlaier cd ${.CURDIR}/libexec/rtld-aout; ${MAKE} -DNOMAN install 958130365Smlaier @echo 959130365Smlaier.if ${MACHINE_ARCH} == "i386" 960130365Smlaier @echo "--------------------------------------------------------------" 961130365Smlaier @echo ">>> Installing legacy boot" 962130365Smlaier @echo "--------------------------------------------------------------" 963130365Smlaier cd ${.CURDIR}/sys/${MACHINE}/boot && ${MAKE} -DNOMAN install 964130365Smlaier.endif 965130365Smlaier.endif 966130365Smlaier 967130365Smlaier 968130365Smlaier# Get the object format that the tools see. 969130365Smlaier# 970130365Smlaier# 971130365Smlaier.if exists(/usr/bin/objformat) 972130365Smlaier__OBJFORMAT!= objformat 973130365Smlaier.else 974130365Smlaier__OBJFORMAT= ${OBJFORMAT} 975130365Smlaier.endif 976130365Smlaier 977130365Smlaier# 978130365Smlaier# Check if the local /etc/make.conf or /etc/make.conf.local have attempted 979130365Smlaier# to override the OBJFORMAT without updating the environment for the tools 980247830Sglebius# to see. 981130365Smlaier# 982130365Smlaiercheck-objformat : 983130365Smlaier.if ${__OBJFORMAT} != ${OBJFORMAT} 984130365Smlaier @/bin/sh -c "echo \"It looks like you set OBJFORMAT=${OBJFORMAT} in /etc/make.conf. Don't do that!\" " 985130365Smlaier @/bin/sh -c "echo \"If you want to override the installed object format, you must set OBJFORMAT\" " 986130365Smlaier @/bin/sh -c "echo \"in your environment.\" " 987130365Smlaier @exit 1 988130365Smlaier.endif 989130365Smlaier.if !defined(REALLY_WANT_DEPRECIATED_AOUT) && ${OBJFORMAT} == "aout" 990130365Smlaier @echo "==== NOTICE: a.out buildworld is depreciated and disabled! =====" 991130365Smlaier @echo "Read: http://www.freebsd.org/~peter/elfday.html for information." 992130365Smlaier @echo "You need to complete a 'make aout-to-elf' to bring your system" 993130365Smlaier @echo "up to date with ELF tools. This requires a fair amount of disk" 994130365Smlaier @echo "space to complete. Alternatively, you can do a binary upgrade" 995130365Smlaier @echo "using the 3.0-RELEASE binaries from CD or ftp.freebsd.org in" 996130365Smlaier @echo "/pub/FreeBSD/3.0-RELEASE/bin/ to convert your userland to ELF." 997130365Smlaier @exit 1 998130365Smlaier.endif 999130365Smlaier 1000130365Smlaier# 1001130365Smlaier# cross toolchain 1002130365Smlaier# 1003130365Smlaier# This is a subset of the tools built in lib-tools, build-tools, etc. What 1004130365Smlaier# we are looking for here is to build the cross compilers, etc, with 1005130365Smlaier# the current host compiler. 1006130365Smlaier# 1007130365Smlaiercross-toolchain: 1008130365Smlaier.for d in \ 1009130365Smlaier gnu/usr.bin/binutils \ 1010130365Smlaier gnu/usr.bin/bison \ 1011130365Smlaier gnu/usr.bin/cc \ 1012130365Smlaier usr.bin/objformat 1013130365Smlaier cd ${.CURDIR}/$d; ${MAKE} ${MK_FLAGS} ${_DEPEND}; \ 1014130365Smlaier ${XTMAKE} ${MK_FLAGS} all; \ 1015130365Smlaier ${XTMAKE} ${MK_FLAGS} -B install; \ 1016130365Smlaier ${XTMAKE} ${MK_FLAGS:S/-DNOPIC//} -B ${CLEANDIR} ${OBJDIR} 1017130365Smlaier.endfor 1018130365Smlaier 1019130365Smlaier.for __target in clean cleandepend cleandir depend obj 1020130365Smlaier.for entry in ${SUBDIR} 1021130365Smlaier${entry}.${__target}__D: .PHONY 1022130365Smlaier @if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 1023130365Smlaier ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH}"; \ 1024130365Smlaier edir=${entry}.${MACHINE_ARCH}; \ 1025130365Smlaier cd ${.CURDIR}/$${edir}; \ 1026130365Smlaier else \ 1027130365Smlaier ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ 1028130365Smlaier edir=${entry}; \ 1029130365Smlaier cd ${.CURDIR}/$${edir}; \ 1030130365Smlaier fi; \ 1031130365Smlaier ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 1032130365Smlaier.endfor 1033130365Smlaierpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 1034130365Smlaier.endfor 1035130365Smlaier 1036130365Smlaier.include <bsd.subdir.mk> 1037130365Smlaier