Makefile.inc1 revision 142643
1101099Srwatson# 2126097Srwatson# $FreeBSD: head/Makefile.inc1 142643 2005-02-27 11:51:46Z ru $ 3140628Srwatson# 4101099Srwatson# Make command line options: 5101099Srwatson# -DNO_DYNAMICROOT do not link /bin and /sbin dynamically 6101099Srwatson# -DNO_KERBEROS Do not build Heimdal (Kerberos 5) 7101099Srwatson# -DNO_RESCUE do not build rescue binaries 8140628Srwatson# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 9140628Srwatson# -DNO_CLEAN do not clean at all 10140628Srwatson# -DNO_CRYPT will prevent building of crypt versions 11140628Srwatson# -DNO_MAN do not build the manual pages 12101099Srwatson# -DNO_PROFILE do not build profiled libraries 13101099Srwatson# -DNO_GAMES do not go into games subdir 14101099Srwatson# -DNO_SHARE do not go into share subdir 15101099Srwatson# -DNO_INFO do not make or install info files 16101099Srwatson# -DNO_LIBC_R do not build libc_r. 17101099Srwatson# -DNO_FORTRAN do not build g77 and related libraries. 18101099Srwatson# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel 19101099Srwatson# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel 20101099Srwatson# -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel 21101099Srwatson# -DNO_PORTSUPDATE do not update ports in ${MAKE} update 22101099Srwatson# -DNO_DOCUPDATE do not update doc in ${MAKE} update 23101099Srwatson# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 24101099Srwatson# TARGET_ARCH="arch" to crossbuild world to a different arch 25101099Srwatson 26101099Srwatson# 27101099Srwatson# The intended user-driven targets are: 28101099Srwatson# buildworld - rebuild *everything*, including glue to help do upgrades 29101099Srwatson# installworld- install everything built by "buildworld" 30101099Srwatson# update - convenient way to update your source tree (eg: cvsup/cvs) 31101099Srwatson# 32101099Srwatson# Standard targets (not defined here) are documented in the makefiles in 33101099Srwatson# /usr/share/mk. These include: 34101099Srwatson# obj depend all install clean cleandepend cleanobj 35101099Srwatson 36101099Srwatson# We must do share/info early so that installation of info `dir' 37101099Srwatson# entries works correctly. Do it first since it is less likely to 38101099Srwatson# grow dependencies on include and lib than vice versa. 39101099Srwatson# 40101099Srwatson# We must do lib and libexec before bin, because if installworld 41101099Srwatson# installs a new /bin/sh, the 'make' command will *immediately* 42101099Srwatson# use that new version. And the new (dynamically-linked) /bin/sh 43101099Srwatson# will expect to find appropriate libraries in /lib and /libexec. 44101099Srwatson# 45101099Srwatson# We must do etc last for install/distribute to work. 46105988Srwatson# 47101099SrwatsonSUBDIR= share/info include lib libexec bin 48164184Strhodes.if !defined(NO_GAMES) 49101099SrwatsonSUBDIR+=games 50103183Sbde.endif 51145076ScsjpSUBDIR+=gnu 52101099Srwatson.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 53101099SrwatsonSUBDIR+=kerberos5 54115497Srwatson.endif 55101099Srwatson.if !defined(NO_RESCUE) 56101099SrwatsonSUBDIR+=rescue 57101099Srwatson.endif 58105696SrwatsonSUBDIR+=sbin 59101099Srwatson.if !defined(NO_CRYPT) 60101099SrwatsonSUBDIR+=secure 61101099Srwatson.endif 62101099Srwatson.if !defined(NO_SHARE) 63101099SrwatsonSUBDIR+=share 64150340Sphk.endif 65101099SrwatsonSUBDIR+=sys usr.bin usr.sbin etc 66140628Srwatson 67140628Srwatson# These are last, since it is nice to at least get the base system 68140628Srwatson# rebuilt before you do them. 69101099Srwatson.for _DIR in ${LOCAL_DIRS} 70101099Srwatson.if exists(${.CURDIR}/${_DIR}/Makefile) 71101099SrwatsonSUBDIR+= ${_DIR} 72101099Srwatson.endif 73101099Srwatson.endfor 74101099Srwatson 75101099Srwatson.if defined(SUBDIR_OVERRIDE) 76101099SrwatsonSUBDIR= ${SUBDIR_OVERRIDE} 77101099Srwatson.endif 78122875Srwatson 79101099Srwatson.if defined(NO_CLEANDIR) 80101099SrwatsonCLEANDIR= clean cleandepend 81122879Srwatson.else 82101099SrwatsonCLEANDIR= cleandir 83101099Srwatson.endif 84101099Srwatson 85101099SrwatsonCVS?= cvs 86101099SrwatsonCVSFLAGS?= -A -P -d -I! 87101099SrwatsonSUP?= /usr/local/bin/cvsup 88101099SrwatsonSUPFLAGS?= -g -L 2 -P - 89101099Srwatson.if defined(SUPHOST) 90101099SrwatsonSUPFLAGS+= -h ${SUPHOST} 91101099Srwatson.endif 92101099Srwatson 93105988SrwatsonMAKEOBJDIRPREFIX?= /usr/obj 94105988Srwatson.if !defined(OSRELDATE) 95105988Srwatson.if exists(/usr/include/osreldate.h) 96105988SrwatsonOSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ 97107731Srwatson /usr/include/osreldate.h 98101099Srwatson.else 99101099SrwatsonOSRELDATE= 0 100102980Srwatson.endif 101101099Srwatson.endif 102101099SrwatsonTARGET_ARCH?= ${MACHINE_ARCH} 103101099Srwatson.if ${TARGET_ARCH} == ${MACHINE_ARCH} 104101099SrwatsonTARGET?= ${MACHINE} 105101099SrwatsonTARGET_CPUTYPE?=${CPUTYPE} 106101099Srwatson.else 107101099SrwatsonTARGET?= ${TARGET_ARCH} 108101099SrwatsonTARGET_CPUTYPE?= 109101099Srwatson.endif 110101099Srwatson.if !empty(TARGET_CPUTYPE) 111101099Srwatson_TARGET_CPUTYPE=${TARGET_CPUTYPE} 112101099Srwatson.else 113101099Srwatson_TARGET_CPUTYPE=dummy 114101099Srwatson.endif 115101099Srwatson_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \ 116101099Srwatson -f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE 117105643Srwatson.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} 118105643Srwatson.error CPUTYPE global should be set with ?=. 119105643Srwatson.endif 120105643Srwatson.if make(buildworld) 121105606SrwatsonBUILD_ARCH!= sysctl -n hw.machine_arch 122105606Srwatson.if ${MACHINE_ARCH} != ${BUILD_ARCH} 123105606Srwatson.error To cross-build, set TARGET_ARCH. 124105606Srwatson.endif 125105606Srwatson.endif 126153927Scsjp.if ${MACHINE} == ${TARGET} 127153927ScsjpOBJTREE= ${MAKEOBJDIRPREFIX} 128153927Scsjp.else 129153927ScsjpOBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET} 130153927Scsjp.endif 131105637SrwatsonWORLDTMP= ${OBJTREE}${.CURDIR}/${MACHINE_ARCH} 132101099Srwatson# /usr/games added for fortune which depend on strfile 133105637SrwatsonBPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games 134105637SrwatsonXPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games 135101099SrwatsonSTRICTTMPPATH= ${BPATH}:${XPATH} 136101099SrwatsonTMPPATH= ${STRICTTMPPATH}:${PATH} 137101099Srwatson 138132781SkanINSTALLTMP!= /usr/bin/mktemp -d -u -t install 139101099Srwatson 140122879Srwatson# 141101099Srwatson# Building a world goes through the following stages 142105643Srwatson# 143105643Srwatson# 1. legacy stage [BMAKE] 144105643Srwatson# This stage is responsible for creating compatibility 145105643Srwatson# shims that are needed by the bootstrap-tools, 146105643Srwatson# build-tools and cross-tools stages. 147105643Srwatson# 1. bootstrap-tools stage [BMAKE] 148105643Srwatson# This stage is responsible for creating programs that 149105643Srwatson# are needed for backward compatibility reasons. They 150105643Srwatson# are not built as cross-tools. 151105643Srwatson# 2. build-tools stage [TMAKE] 152101099Srwatson# This stage is responsible for creating the object 153104514Srwatson# tree and building any tools that are needed during 154101099Srwatson# the build process. 155101099Srwatson# 3. cross-tools stage [XMAKE] 156122879Srwatson# This stage is responsible for creating any tools that 157101099Srwatson# are needed for cross-builds. A cross-compiler is one 158101099Srwatson# of them. 159101099Srwatson# 4. world stage [WMAKE] 160101099Srwatson# This stage actually builds the world. 161101099Srwatson# 5. install stage (optional) [IMAKE] 162101099Srwatson# This stage installs a previously built world. 163101099Srwatson# 164122879Srwatson 165101099SrwatsonBOOTSTRAPPING?= 0 166101099Srwatson 167101099Srwatson# Common environment for world related stages 168101099SrwatsonCROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ 169101099Srwatson MACHINE_ARCH=${TARGET_ARCH} \ 170105634Srwatson MACHINE=${TARGET} \ 171105634Srwatson CPUTYPE=${TARGET_CPUTYPE} \ 172105634Srwatson GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ 173105634Srwatson GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ 174105634Srwatson GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac 175105634Srwatson 176105634Srwatson# bootstrap-tools stage 177105634SrwatsonBMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ 178105634Srwatson PATH=${BPATH}:${PATH} \ 179101099Srwatson WORLDTMP=${WORLDTMP} \ 180101099Srwatson MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" 181101099SrwatsonBMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ 182105643Srwatson ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 183101099Srwatson DESTDIR= \ 184105736Srwatson BOOTSTRAPPING=${OSRELDATE} \ 185101099Srwatson -DNO_HTML -DNO_INFO -DNO_LINT -DNO_MAN -DNO_PIC -DNO_PROFILE \ 186101099Srwatson -DNO_SHARED -DNO_CPU_CFLAGS -DNO_WARNS 187101099Srwatson 188101099Srwatson# build-tools stage 189101099SrwatsonTMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ 190101099Srwatson ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 191101099Srwatson DESTDIR= \ 192101099Srwatson BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS 193101099Srwatson 194101099Srwatson# cross-tools stage 195101099SrwatsonXMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} -DNO_FORTRAN -DNO_GDB 196101099Srwatson 197101099Srwatson# world stage 198101099SrwatsonWMAKEENV= ${CROSSENV} \ 199101099Srwatson _SHLIBDIRPREFIX=${WORLDTMP} \ 200101099Srwatson INSTALL="sh ${.CURDIR}/tools/install.sh" \ 201101099Srwatson PATH=${TMPPATH} 202101099SrwatsonWMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} 203101099Srwatson 204101099Srwatson.if ${MACHINE_ARCH} == "amd64" 205101099Srwatson# 32 bit world 206101099SrwatsonLIB32TMP= ${OBJTREE}${.CURDIR}/lib32 207101099Srwatson 208101099SrwatsonLIB32PREFLAGS= -m32 -march=athlon-xp -msse2 -mfancy-math-387 -DCOMPAT_32BIT 209101099SrwatsonLIB32POSTFLAGS= -I${LIB32TMP}/usr/include \ 210101099Srwatson -L${LIB32TMP}/usr/lib32 \ 211101099Srwatson -B${LIB32TMP}/usr/lib32 212101099SrwatsonLIB32CC= ${LIB32PREFLAGS} \ 213105643Srwatson ${LIB32POSTFLAGS} 214105643SrwatsonLIB32CXX= ${LIB32PREFLAGS} -I${LIB32TMP}/usr/include/c++/3.4 \ 215105643Srwatson ${LIB32POSTFLAGS} 216105643SrwatsonLIB32OBJC= ${LIB32PREFLAGS} -I${LIB32TMP}/usr/include/objc \ 217105643Srwatson ${LIB32POSTFLAGS} 218101099Srwatson 219101099Srwatson# Yes, the flags are redundant. 220101099SrwatsonLIB32MAKEENV= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ 221101099Srwatson _SHLIBDIRPREFIX=${LIB32TMP} \ 222101099Srwatson MACHINE_ARCH=i386 \ 223101099Srwatson INSTALL="sh ${.CURDIR}/tools/install.sh" \ 224101099Srwatson PATH=${TMPPATH} \ 225101099Srwatson CC="cc ${LIB32CC}" \ 226101099Srwatson CXX="c++ ${LIB32CXX}" \ 227101099Srwatson OBJC="cc ${LIB32OBJC}" \ 228101099Srwatson LD="ld -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \ 229101099Srwatson AS="as --32" \ 230101099Srwatson LIBDIR=/usr/lib32 \ 231101099Srwatson SHLIBDIR=/usr/lib32 232105988Srwatson 233105988SrwatsonLIB32MAKE= ${LIB32MAKEENV} ${MAKE} -DNO_CPU_CFLAGS -DCOMPAT_32BIT \ 234105988Srwatson -DNO_BIND -DNO_MAN -DNO_INFO -DNO_HTML \ 235105988Srwatson CC="cc ${LIB32CC}" \ 236132232Srwatson CXX="c++ ${LIB32CXX}" \ 237132232Srwatson OBJC="cc ${LIB32OBJC}" \ 238132232Srwatson LD="ld -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \ 239105988Srwatson AS="as --32" \ 240105988Srwatson LIBDIR=/usr/lib32 \ 241105988Srwatson SHLIBDIR=/usr/lib32 242105988Srwatson.endif 243105988Srwatson 244105988Srwatson# install stage 245101099Srwatson.if empty(.MAKEFLAGS:M-n) 246101099SrwatsonIMAKEENV= ${CROSSENV} \ 247101099Srwatson PATH=${STRICTTMPPATH}:${INSTALLTMP} 248101099Srwatson.else 249101099SrwatsonIMAKEENV= ${CROSSENV} \ 250101099Srwatson PATH=${TMPPATH}:${INSTALLTMP} 251101099Srwatson.endif 252101099SrwatsonIMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 253101099Srwatson 254101099Srwatson# kernel stage 255136774SrwatsonKMAKEENV= ${WMAKEENV} 256136774Srwatson 257101099Srwatson# 258101099Srwatson# buildworld 259132232Srwatson# 260132232Srwatson# Attempt to rebuild the entire system, with reasonable chance of 261103750Srwatson# success, regardless of how old your existing system is. 262132232Srwatson# 263101099Srwatson_worldtmp: 264101099Srwatson.if ${.CURDIR:C/[^,]//g} != "" 265132232Srwatson# The m4 build of sendmail files doesn't like it if ',' is used 266132232Srwatson# anywhere in the path of it's files. 267101099Srwatson @echo 268101099Srwatson @echo "*** Error: path to source tree contains a comma ','" 269101099Srwatson @echo 270101099Srwatson false 271101099Srwatson.endif 272101099Srwatson @echo 273132232Srwatson @echo "--------------------------------------------------------------" 274101099Srwatson @echo ">>> Rebuilding the temporary build tree" 275132232Srwatson @echo "--------------------------------------------------------------" 276132232Srwatson.if !defined(NO_CLEAN) 277132232Srwatson rm -rf ${WORLDTMP} 278132232Srwatson.else 279101099Srwatson rm -rf ${WORLDTMP}/legacy/usr/include 280132232Srwatson # XXX - These two can depend on any header file. 281101099Srwatson rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c 282101099Srwatson rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c 283101099Srwatson.endif 284101099Srwatson.for _dir in \ 285101099Srwatson usr/bin usr/games usr/include/c++/3.4 usr/include/sys usr/lib \ 286101099Srwatson usr/libexec usr/sbin usr/share/dict \ 287101099Srwatson usr/share/groff_font/devX100 \ 288101099Srwatson usr/share/groff_font/devX100-12 \ 289101099Srwatson usr/share/groff_font/devX75 \ 290101099Srwatson usr/share/groff_font/devX75-12 \ 291101099Srwatson usr/share/groff_font/devascii \ 292101099Srwatson usr/share/groff_font/devcp1047 \ 293101099Srwatson usr/share/groff_font/devdvi \ 294101099Srwatson usr/share/groff_font/devhtml \ 295132232Srwatson usr/share/groff_font/devkoi8-r \ 296101099Srwatson usr/share/groff_font/devlatin1 \ 297101099Srwatson usr/share/groff_font/devlbp \ 298132232Srwatson usr/share/groff_font/devlj4 \ 299132232Srwatson usr/share/groff_font/devps \ 300132232Srwatson usr/share/groff_font/devutf8 \ 301132232Srwatson usr/share/tmac/mdoc usr/share/tmac/mm 302101099Srwatson mkdir -p ${WORLDTMP}/legacy/${_dir} 303132232Srwatson.endfor 304101099Srwatson.for _dir in \ 305101099Srwatson lib usr/bin usr/include usr/lib/compat/aout usr/libdata/ldscripts \ 306101099Srwatson usr/libexec usr/sbin usr/share/misc \ 307105634Srwatson usr/share/snmp/defs usr/share/snmp/mibs 308105634Srwatson mkdir -p ${WORLDTMP}/${_dir} 309105634Srwatson.endfor 310132232Srwatson mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 311132232Srwatson -p ${WORLDTMP}/usr/include >/dev/null 312105634Srwatson ln -sf ${.CURDIR}/sys ${WORLDTMP} 313105634Srwatson.if defined(WITH_BIND_LIBS) && !defined(NO_BIND) 314105634Srwatson mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \ 315105634Srwatson -p ${WORLDTMP}/usr/include >/dev/null 316105634Srwatson.endif 317105634Srwatson_legacy: 318105637Srwatson @echo 319105634Srwatson @echo "--------------------------------------------------------------" 320105634Srwatson @echo ">>> stage 1.1: legacy release compatibility shims" 321105634Srwatson @echo "--------------------------------------------------------------" 322105634Srwatson ${_+_}cd ${.CURDIR}; ${BMAKE} legacy 323105634Srwatson_bootstrap-tools: 324105634Srwatson @echo 325106090Srwatson @echo "--------------------------------------------------------------" 326105634Srwatson @echo ">>> stage 1.2: bootstrap tools" 327105634Srwatson @echo "--------------------------------------------------------------" 328105634Srwatson ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools 329105634Srwatson_cleanobj: 330106090Srwatson.if !defined(NO_CLEAN) 331105634Srwatson @echo 332132232Srwatson @echo "--------------------------------------------------------------" 333132232Srwatson @echo ">>> stage 2.1: cleaning up the object tree" 334105634Srwatson @echo "--------------------------------------------------------------" 335105634Srwatson ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/} 336105634Srwatson.endif 337105634Srwatson_obj: 338105634Srwatson @echo 339105634Srwatson @echo "--------------------------------------------------------------" 340105634Srwatson @echo ">>> stage 2.2: rebuilding the object tree" 341105634Srwatson @echo "--------------------------------------------------------------" 342105634Srwatson ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj 343105634Srwatson_build-tools: 344105634Srwatson @echo 345105634Srwatson @echo "--------------------------------------------------------------" 346105634Srwatson @echo ">>> stage 2.3: build tools" 347105634Srwatson @echo "--------------------------------------------------------------" 348105634Srwatson ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools 349105634Srwatson_cross-tools: 350106091Srwatson @echo 351132232Srwatson @echo "--------------------------------------------------------------" 352105988Srwatson @echo ">>> stage 3: cross tools" 353105988Srwatson @echo "--------------------------------------------------------------" 354132232Srwatson ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools 355132232Srwatson_includes: 356105988Srwatson @echo 357132232Srwatson @echo "--------------------------------------------------------------" 358105988Srwatson @echo ">>> stage 4.1: building includes" 359105988Srwatson @echo "--------------------------------------------------------------" 360105634Srwatson ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes 361101099Srwatson_libraries: 362101099Srwatson @echo 363101099Srwatson @echo "--------------------------------------------------------------" 364132232Srwatson @echo ">>> stage 4.2: building libraries" 365132232Srwatson @echo "--------------------------------------------------------------" 366101099Srwatson ${_+_}cd ${.CURDIR}; \ 367101099Srwatson ${WMAKE} -DNO_FSCHG -DNO_HTML -DNO_INFO -DNO_LINT -DNO_MAN -DNO_PROFILE \ 368101099Srwatson libraries 369101099Srwatson_depend: 370101099Srwatson @echo 371101099Srwatson @echo "--------------------------------------------------------------" 372132232Srwatson @echo ">>> stage 4.3: make dependencies" 373105643Srwatson @echo "--------------------------------------------------------------" 374132232Srwatson ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend 375101099Srwatsoneverything: 376101099Srwatson @echo 377101099Srwatson @echo "--------------------------------------------------------------" 378101099Srwatson @echo ">>> stage 4.4: building everything" 379101099Srwatson @echo "--------------------------------------------------------------" 380101099Srwatson ${_+_}cd ${.CURDIR}; ${WMAKE} par-all 381101099Srwatson.if ${MACHINE_ARCH} == "amd64" 382132232Srwatsonbuild32: 383101099Srwatson @echo 384101099Srwatson @echo "--------------------------------------------------------------" 385101099Srwatson @echo ">>> stage 5.1: building 32 bit shim libraries" 386101099Srwatson @echo "--------------------------------------------------------------" 387101099Srwatson.for _dir in \ 388101099Srwatson lib lib32 usr/bin usr/include usr/lib32 usr/libdata/ldscripts \ 389101099Srwatson usr/libexec usr/sbin usr/share/misc \ 390101099Srwatson usr/share/snmp/defs usr/share/snmp/mibs 391101099Srwatson mkdir -p ${LIB32TMP}/${_dir} 392101099Srwatson.endfor 393101099Srwatson mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 394105643Srwatson -p ${LIB32TMP}/usr/include >/dev/null 395105643Srwatson ln -sf ${.CURDIR}/sys ${WORLDTMP} 396105643Srwatson.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 397101099Srwatson.for _t in obj depend all 398101099Srwatson cd ${.CURDIR}/kerberos5/tools; \ 399101099Srwatson MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} ${_t} 400101099Srwatson.endfor 401101099Srwatson.endif 402101099Srwatson.for _t in obj includes 403101099Srwatson cd ${.CURDIR}/include; \ 404101099Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 405101099Srwatson cd ${.CURDIR}/lib; \ 406101099Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 407101099Srwatson cd ${.CURDIR}/gnu/lib; \ 408101099Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 409101099Srwatson.if !defined(NO_CRYPT) 410101099Srwatson cd ${.CURDIR}/secure/lib; \ 411105643Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 412105643Srwatson.endif 413105643Srwatson.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 414101099Srwatson cd ${.CURDIR}/kerberos5/lib; \ 415101099Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 416101099Srwatson.endif 417101099Srwatson.endfor 418101099Srwatson.for _dir in usr.sbin/pcvt/keycap usr.bin/lex/lib 419101099Srwatson cd ${.CURDIR}/${_dir}; \ 420101099Srwatson ${LIB32MAKE} DESTDIR=${LIB32TMP} obj 421101099Srwatson.endfor 422101099Srwatson.for _dir in lib/libncurses lib/libmagic 423101099Srwatson cd ${.CURDIR}/${_dir}; \ 424101099Srwatson MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} build-tools 425101099Srwatson.endfor 426101099Srwatson cd ${.CURDIR}; \ 427101099Srwatson ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries 428101099Srwatson.for _t in obj depend all 429101099Srwatson cd ${.CURDIR}/libexec/rtld-elf; \ 430101099Srwatson PROG=ld-elf32.so.1 ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 431101099Srwatson.endfor 432101099Srwatson 433101099Srwatsoninstall32: 434105643Srwatson mkdir -p ${DESTDIR}/usr/lib32 # XXX add to mtree 435105643Srwatson cd ${.CURDIR}/lib; ${LIB32MAKE} install 436101099Srwatson cd ${.CURDIR}/gnu/lib; ${LIB32MAKE} install 437101099Srwatson.if !defined(NO_CRYPT) 438101099Srwatson cd ${.CURDIR}/secure/lib; ${LIB32MAKE} install 439101099Srwatson.endif 440105643Srwatson cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32MAKE} install 441105643Srwatson.endif 442105643Srwatson 443105643Srwatson 444101099SrwatsonWMAKE_TGTS= 445101099Srwatson.if !defined(SUBDIR_OVERRIDE) 446105643SrwatsonWMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools 447105643Srwatson.endif 448105643SrwatsonWMAKE_TGTS+= _cleanobj _obj _build-tools 449105643Srwatson.if !defined(SUBDIR_OVERRIDE) 450101099SrwatsonWMAKE_TGTS+= _cross-tools 451101099Srwatson.endif 452101099SrwatsonWMAKE_TGTS+= _includes _libraries _depend everything 453101099Srwatson.if ${MACHINE_ARCH} == "amd64" && defined(WITH_LIB32) 454132232SrwatsonWMAKE_TGTS+= build32 455105643Srwatson.endif 456101099Srwatson 457101099Srwatsonbuildworld: ${WMAKE_TGTS} 458132232Srwatson.ORDER: ${WMAKE_TGTS} 459132232Srwatson 460105643Srwatsonbuildenv: 461132232Srwatson @echo Entering world for ${TARGET_ARCH}:${TARGET} 462132232Srwatson @cd ${.CURDIR} && env ${WMAKEENV} sh || true 463132232Srwatson 464101099SrwatsonTOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything} 465101099Srwatsontoolchain: ${TOOLCHAIN_TGTS} 466101099Srwatsonkernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} 467101099Srwatson 468101099Srwatson# 469105643Srwatson# Use this to add checks to installworld/installkernel targets. 470101099Srwatson# 471101099SrwatsonSPECIAL_INSTALLCHECKS= 472101099Srwatson 473101099Srwatson# 474101099Srwatson# installcheck 475101099Srwatson# 476101099Srwatson# Checks to be sure system is ready for installworld 477101099Srwatson# 478101099SrwatsonCHECK_UIDS= 479132232SrwatsonCHECK_GIDS= 480101099Srwatson.if !defined(NO_SENDMAIL) 481101099SrwatsonCHECK_UIDS+= smmsp 482132232SrwatsonCHECK_GIDS+= smmsp 483132232Srwatson.endif 484101099Srwatson.if !defined(NO_PF) 485132232SrwatsonCHECK_UIDS+= proxy 486132232SrwatsonCHECK_GIDS+= proxy authpf 487101099Srwatson.endif 488101099Srwatsoninstallcheck: ${SPECIAL_INSTALLCHECKS} 489105656Srwatson.for uid in ${CHECK_UIDS} 490105656Srwatson @if ! `id -u ${uid} >/dev/null 2>&1`; then \ 491105656Srwatson echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \ 492105656Srwatson false; \ 493132232Srwatson fi 494132232Srwatson.endfor 495105656Srwatson.for gid in ${CHECK_GIDS} 496105656Srwatson @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \ 497105656Srwatson echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \ 498105656Srwatson false; \ 499101099Srwatson fi 500101099Srwatson.endfor 501101099Srwatson 502101099Srwatson# 503101099Srwatson# distributeworld 504101099Srwatson# 505101099Srwatson# Distributes everything compiled by a `buildworld'. 506122879Srwatson# 507122879Srwatson# installworld 508101099Srwatson# 509101099Srwatson# Installs everything compiled by a 'buildworld'. 510101099Srwatson# 511101099Srwatsondistributeworld installworld: installcheck 512101099Srwatson mkdir -p ${INSTALLTMP} 513101099Srwatson for prog in [ awk cap_mkdb cat chflags chmod chown \ 514104514Srwatson date echo egrep find grep \ 515101099Srwatson ln make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ 516101099Srwatson test true uname wc zic; do \ 517132781Skan cp `which $$prog` ${INSTALLTMP}; \ 518101099Srwatson done 519101099Srwatson ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//} 520101099Srwatson rm -rf ${INSTALLTMP} 521104514Srwatson 522101099Srwatson# 523101099Srwatson# reinstall 524132781Skan# 525101099Srwatson# If you have a build server, you can NFS mount the source and obj directories 526101099Srwatson# and do a 'make reinstall' on the *client* to install new binaries from the 527101099Srwatson# most recent server build. 528101099Srwatson# 529101099Srwatsonreinstall: ${SPECIAL_INSTALLCHECKS} 530101099Srwatson @echo "--------------------------------------------------------------" 531101099Srwatson @echo ">>> Making hierarchy" 532104514Srwatson @echo "--------------------------------------------------------------" 533101099Srwatson ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 534101099Srwatson @echo 535101099Srwatson @echo "--------------------------------------------------------------" 536132781Skan @echo ">>> Installing everything" 537101099Srwatson @echo "--------------------------------------------------------------" 538101099Srwatson ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 539105696Srwatson.if ${MACHINE_ARCH} == "amd64" && defined(WITH_LIB32) 540115497Srwatson ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 541115497Srwatson.endif 542115497Srwatson 543105696Srwatsonredistribute: 544115497Srwatson @echo "--------------------------------------------------------------" 545115497Srwatson @echo ">>> Distributing everything" 546105696Srwatson @echo "--------------------------------------------------------------" 547115497Srwatson ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute 548105696Srwatson 549105696Srwatson# 550105696Srwatson# buildkernel and installkernel 551115497Srwatson# 552105696Srwatson# Which kernels to build and/or install is specified by setting 553105696Srwatson# KERNCONF. If not defined a GENERIC kernel is built/installed. 554115497Srwatson# Only the existing (depending TARGET) config files are used 555105696Srwatson# for building kernels and only the first of these is designated 556105696Srwatson# as the one being installed. 557115497Srwatson# 558105696Srwatson# Note that we have to use TARGET instead of TARGET_ARCH when 559105696Srwatson# we're in kernel-land. Since only TARGET_ARCH is (expected) to 560115497Srwatson# be set to cross-build, we have to make sure TARGET is set 561115497Srwatson# properly. 562115497Srwatson 563115497Srwatson.if !defined(KERNCONF) && defined(KERNEL) 564115497SrwatsonKERNCONF= ${KERNEL} 565115497SrwatsonKERNWARN= 566115497Srwatson.else 567115497SrwatsonKERNCONF?= GENERIC 568115497Srwatson.endif 569115497SrwatsonINSTKERNNAME?= kernel 570115497Srwatson 571115497SrwatsonKERNSRCDIR?= ${.CURDIR}/sys 572115497SrwatsonKRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf 573115497SrwatsonKRNLOBJDIR= ${OBJTREE}${KERNSRCDIR} 574115497SrwatsonKERNCONFDIR?= ${KRNLCONFDIR} 575115497Srwatson 576115497SrwatsonBUILDKERNELS= 577105696SrwatsonINSTALLKERNEL= 578115497Srwatson.for _kernel in ${KERNCONF} 579105696Srwatson.if exists(${KERNCONFDIR}/${_kernel}) 580105696SrwatsonBUILDKERNELS+= ${_kernel} 581105696Srwatson.if empty(INSTALLKERNEL) 582105696SrwatsonINSTALLKERNEL= ${_kernel} 583105696Srwatson.endif 584105696Srwatson.endif 585105696Srwatson.endfor 586115497Srwatson 587116701Srwatson# 588116701Srwatson# buildkernel 589116701Srwatson# 590116701Srwatson# Builds all kernels defined by BUILDKERNELS. 591116701Srwatson# 592115497Srwatsonbuildkernel: 593101099Srwatson.if empty(BUILDKERNELS) 594116701Srwatson @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \ 595101099Srwatson false 596105696Srwatson.endif 597132232Srwatson.if defined(KERNWARN) 598132232Srwatson @echo "--------------------------------------------------------------" 599115497Srwatson @echo ">>> WARNING: KERNEL= setting should be changed to KERNCONF=" 600105696Srwatson @echo "--------------------------------------------------------------" 601105696Srwatson @sleep 3 602105696Srwatson.endif 603105696Srwatson @echo 604116701Srwatson.for _kernel in ${BUILDKERNELS} 605105696Srwatson @echo "--------------------------------------------------------------" 606105696Srwatson @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" 607116701Srwatson @echo "--------------------------------------------------------------" 608115497Srwatson @echo "===> ${_kernel}" 609105696Srwatson mkdir -p ${KRNLOBJDIR} 610105696Srwatson.if !defined(NO_KERNELCONFIG) 611116701Srwatson @echo 612105696Srwatson @echo "--------------------------------------------------------------" 613105696Srwatson @echo ">>> stage 1: configuring the kernel" 614116701Srwatson @echo "--------------------------------------------------------------" 615115497Srwatson cd ${KRNLCONFDIR}; \ 616105696Srwatson PATH=${TMPPATH} \ 617105696Srwatson config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ 618116701Srwatson ${KERNCONFDIR}/${_kernel} 619105696Srwatson.endif 620105696Srwatson.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) 621105696Srwatson @echo 622105696Srwatson @echo "--------------------------------------------------------------" 623105696Srwatson @echo ">>> stage 2.1: cleaning up the object tree" 624105696Srwatson @echo "--------------------------------------------------------------" 625105696Srwatson cd ${KRNLOBJDIR}/${_kernel}; \ 626105696Srwatson ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} ${CLEANDIR} 627116701Srwatson.endif 628105696Srwatson @echo 629101099Srwatson @echo "--------------------------------------------------------------" 630101099Srwatson @echo ">>> stage 2.2: rebuilding the object tree" 631105696Srwatson @echo "--------------------------------------------------------------" 632105696Srwatson cd ${KRNLOBJDIR}/${_kernel}; \ 633105696Srwatson ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} obj 634105696Srwatson @echo 635105696Srwatson @echo "--------------------------------------------------------------" 636101099Srwatson @echo ">>> stage 2.3: build tools" 637116701Srwatson @echo "--------------------------------------------------------------" 638105696Srwatson cd ${KRNLOBJDIR}/${_kernel}; \ 639105696Srwatson MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ 640105696Srwatson ${MAKE} -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile 641105696Srwatson# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. 642101099Srwatson.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) 643115395Srwatson.for target in obj depend all 644115395Srwatson cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ 645105696Srwatson MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ 646105696Srwatson ${MAKE} -DNO_CPU_CFLAGS ${target} 647105696Srwatson.endfor 648105696Srwatson.endif 649105696Srwatson.if !defined(NO_KERNELDEPEND) 650105696Srwatson @echo 651105696Srwatson @echo "--------------------------------------------------------------" 652105696Srwatson @echo ">>> stage 3.1: making dependencies" 653105696Srwatson @echo "--------------------------------------------------------------" 654105696Srwatson cd ${KRNLOBJDIR}/${_kernel}; \ 655105696Srwatson ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend -DNO_MODULES_OBJ 656105696Srwatson.endif 657105696Srwatson @echo 658105696Srwatson @echo "--------------------------------------------------------------" 659115395Srwatson @echo ">>> stage 3.2: building everything" 660105696Srwatson @echo "--------------------------------------------------------------" 661115395Srwatson cd ${KRNLOBJDIR}/${_kernel}; \ 662115395Srwatson ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} all -DNO_MODULES_OBJ 663115395Srwatson @echo "--------------------------------------------------------------" 664115395Srwatson @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`" 665115395Srwatson @echo "--------------------------------------------------------------" 666115395Srwatson.endfor 667105696Srwatson 668115395Srwatson# 669115395Srwatson# installkernel, etc. 670115395Srwatson# 671105696Srwatson# Install the kernel defined by INSTALLKERNEL 672115395Srwatson# 673115395Srwatsoninstallkernel installkernel.debug \ 674115395Srwatsonreinstallkernel reinstallkernel.debug: ${SPECIAL_INSTALLCHECKS} 675115395Srwatson.if empty(INSTALLKERNEL) 676115395Srwatson @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ 677115395Srwatson false 678115395Srwatson.endif 679115395Srwatson @echo "--------------------------------------------------------------" 680115395Srwatson @echo ">>> Making hierarchy" 681105696Srwatson @echo "--------------------------------------------------------------" 682115395Srwatson cd ${.CURDIR}; \ 683115395Srwatson ${CROSSENV} PATH=${TMPPATH} ${MAKE} -f Makefile.inc1 hierarchy 684115395Srwatson @echo 685105696Srwatson @echo "--------------------------------------------------------------" 686115395Srwatson @echo ">>> Installing kernel" 687105696Srwatson @echo "--------------------------------------------------------------" 688115395Srwatson cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 689105696Srwatson ${CROSSENV} PATH=${TMPPATH} \ 690105696Srwatson ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} 691105696Srwatson 692105696Srwatson# 693105696Srwatson# update 694105696Srwatson# 695105696Srwatson# Update the source tree, by running cvsup and/or running cvs to update to the 696105696Srwatson# latest copy. 697105696Srwatson# 698105696Srwatsonupdate: 699105696Srwatson.if defined(SUP_UPDATE) 700105696Srwatson @echo "--------------------------------------------------------------" 701105696Srwatson @echo ">>> Running ${SUP}" 702132232Srwatson @echo "--------------------------------------------------------------" 703101099Srwatson.if defined(SUPFILE) 704101099Srwatson @${SUP} ${SUPFLAGS} ${SUPFILE} 705132232Srwatson.endif 706132232Srwatson.if defined(SUPFILE1) 707132232Srwatson @${SUP} ${SUPFLAGS} ${SUPFILE1} 708115395Srwatson.endif 709115395Srwatson.if defined(SUPFILE2) 710115395Srwatson @${SUP} ${SUPFLAGS} ${SUPFILE2} 711115395Srwatson.endif 712105696Srwatson.if defined(PORTSSUPFILE) && !defined(NO_PORTSUPDATE) 713115395Srwatson @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 714115395Srwatson.endif 715105696Srwatson.if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) 716115395Srwatson @${SUP} ${SUPFLAGS} ${DOCSUPFILE} 717105696Srwatson.endif 718115395Srwatson.endif 719115395Srwatson.if defined(CVS_UPDATE) 720115395Srwatson @echo "--------------------------------------------------------------" 721105696Srwatson @echo ">>> Updating ${.CURDIR} from CVS repository" ${CVSROOT} 722115395Srwatson @echo "--------------------------------------------------------------" 723105696Srwatson cd ${.CURDIR}; ${CVS} -R -q update ${CVSFLAGS} 724105696Srwatson.endif 725115395Srwatson 726101099Srwatson# 727105696Srwatson# ------------------------------------------------------------------------ 728132232Srwatson# 729132232Srwatson# From here onwards are utility targets used by the 'make world' and 730105696Srwatson# related targets. If your 'world' breaks, you may like to try to fix 731105696Srwatson# the problem and manually run the following targets to attempt to 732132232Srwatson# complete the build. Beware, this is *not* guaranteed to work, you 733105696Srwatson# need to have a pretty good grip on the current state of the system 734105696Srwatson# to attempt to manually finish it. If in doubt, 'make world' again. 735105696Srwatson# 736105696Srwatson 737105696Srwatson# 738105696Srwatson# legacy: Build compatibility shims for the next three targets 739105696Srwatson# 740105696Srwatsonlegacy: 741105696Srwatson.if ${BOOTSTRAPPING} < 503000 742105696Srwatson @echo "ERROR: Source upgrades from versions prior to 5.3 not supported."; \ 743105696Srwatson false 744105696Srwatson.endif 745105696Srwatson.for _tool in tools/build 746105696Srwatson ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \ 747101099Srwatson cd ${.CURDIR}/${_tool}; \ 748101099Srwatson ${MAKE} DIRPRFX=${_tool}/ obj; \ 749101099Srwatson ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \ 750101099Srwatson ${MAKE} DIRPRFX=${_tool}/ depend; \ 751105696Srwatson ${MAKE} DIRPRFX=${_tool}/ all; \ 752105696Srwatson ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 753101099Srwatson.endfor 754105696Srwatson 755105696Srwatson# 756105696Srwatson# bootstrap-tools: Build tools needed for compatibility 757105696Srwatson# 758105696Srwatson.if !defined(NO_GAMES) 759105696Srwatson_strfile= games/fortune/strfile 760105696Srwatson.endif 761105696Srwatson 762105696Srwatson.if !defined(NO_CXX) 763105696Srwatson_gperf= gnu/usr.bin/gperf 764105696Srwatson.if ${BOOTSTRAPPING} < 500113 765105696Srwatson_groff= gnu/usr.bin/groff 766105696Srwatson.else 767105696Srwatson_groff= gnu/usr.bin/groff/tmac 768105696Srwatson.endif 769105696Srwatson.endif 770105696Srwatson 771105696Srwatson.if ${BOOTSTRAPPING} < 600015 772105696Srwatson_cap_mkdb= usr.bin/cap_mkdb 773101099Srwatson.endif 774101099Srwatson 775101099Srwatson.if ${BOOTSTRAPPING} < 600016 776105696Srwatson_mklocale= usr.bin/mklocale 777105696Srwatson.endif 778105696Srwatson 779105696Srwatson.if !defined(NO_RESCUE) && \ 780105696Srwatson ${BOOTSTRAPPING} < 600008 781105696Srwatson_crunchgen= usr.sbin/crunch/crunchgen 782105696Srwatson.endif 783101099Srwatson 784101099Srwatsonbootstrap-tools: 785101099Srwatson.for _tool in \ 786101099Srwatson ${_strfile} \ 787101099Srwatson ${_gperf} \ 788147982Srwatson ${_groff} \ 789147982Srwatson gnu/usr.bin/texinfo \ 790101099Srwatson ${_cap_mkdb} \ 791101099Srwatson usr.bin/colldef \ 792101099Srwatson usr.bin/lorder \ 793101099Srwatson usr.bin/makewhatis \ 794101099Srwatson ${_mklocale} \ 795101099Srwatson usr.bin/rpcgen \ 796101099Srwatson usr.bin/xinstall \ 797101099Srwatson usr.sbin/config \ 798101099Srwatson ${_crunchgen} 799101099Srwatson ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 800105606Srwatson cd ${.CURDIR}/${_tool}; \ 801105606Srwatson ${MAKE} DIRPRFX=${_tool}/ obj; \ 802105606Srwatson ${MAKE} DIRPRFX=${_tool}/ depend; \ 803105606Srwatson ${MAKE} DIRPRFX=${_tool}/ all; \ 804101099Srwatson ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 805101099Srwatson.endfor 806132232Srwatson 807101099Srwatson# 808101099Srwatson# build-tools: Build special purpose build tools 809101099Srwatson# 810107698Srwatson.if defined(MODULES_WITH_WORLD) && exists(${KERNSRCDIR}/modules) 811107698Srwatson_aicasm= sys/modules/aic7xxx/aicasm 812101099Srwatson.endif 813101099Srwatson 814101099Srwatson.if !defined(NO_SHARE) 815101099Srwatson_share= share/syscons/scrnmaps 816132232Srwatson.endif 817101099Srwatson 818101099Srwatson.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 819101099Srwatson_kerberos5_tools= kerberos5/tools 820107698Srwatson.endif 821107698Srwatson 822122563Srwatson.if !defined(NO_RESCUE) 823104535Srwatson_rescue= rescue/rescue 824104535Srwatson.endif 825104535Srwatson 826122524Srwatsonbuild-tools: 827104535Srwatson.for _tool in \ 828104535Srwatson bin/csh \ 829132232Srwatson bin/sh \ 830104535Srwatson ${_rescue} \ 831104535Srwatson lib/libncurses \ 832104535Srwatson ${_share} \ 833101099Srwatson ${_aicasm} \ 834101099Srwatson usr.bin/awk \ 835101099Srwatson lib/libmagic \ 836101099Srwatson usr.sbin/sysinstall 837101099Srwatson ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ 838122524Srwatson cd ${.CURDIR}/${_tool}; \ 839101099Srwatson ${MAKE} DIRPRFX=${_tool}/ obj; \ 840132232Srwatson ${MAKE} DIRPRFX=${_tool}/ build-tools 841101099Srwatson.endfor 842132232Srwatson.for _tool in \ 843101099Srwatson gnu/usr.bin/cc/cc_tools \ 844101099Srwatson ${_kerberos5_tools} 845101099Srwatson ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \ 846101099Srwatson cd ${.CURDIR}/${_tool}; \ 847101099Srwatson ${MAKE} DIRPRFX=${_tool}/ obj; \ 848101099Srwatson ${MAKE} DIRPRFX=${_tool}/ depend; \ 849101099Srwatson ${MAKE} DIRPRFX=${_tool}/ all 850101099Srwatson.endfor 851101099Srwatson 852101099Srwatson# 853101099Srwatson# cross-tools: Build cross-building tools 854105656Srwatson# 855101099Srwatson.if (${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386") && \ 856101099Srwatson ${TARGET_ARCH} != ${MACHINE_ARCH} 857101099Srwatson_btxld= usr.sbin/btxld 858107698Srwatson.endif 859107698Srwatson 860107698Srwatson.if (!defined(NO_RESCUE) || defined(RELEASEDIR)) && \ 861101099Srwatson ${TARGET_ARCH} != ${MACHINE_ARCH} 862101099Srwatson_crunchide= usr.sbin/crunch/crunchide 863101099Srwatson.endif 864101099Srwatson 865101099Srwatson.if ${TARGET_ARCH} == "alpha" && ${TARGET_ARCH} != ${MACHINE_ARCH} 866101099Srwatson_elf2exe= usr.sbin/elf2exe 867105656Srwatson.endif 868101099Srwatson 869101099Srwatson.if ${TARGET_ARCH} == "i386" && ${TARGET_ARCH} != ${MACHINE_ARCH} && \ 870101099Srwatson defined(RELEASEDIR) 871105988Srwatson_kgzip= usr.sbin/kgzip 872105988Srwatson.endif 873105988Srwatson 874101099Srwatsoncross-tools: 875101099Srwatson.for _tool in \ 876101099Srwatson gnu/usr.bin/binutils \ 877105988Srwatson gnu/usr.bin/cc \ 878105988Srwatson usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ 879101099Srwatson ${_btxld} \ 880132232Srwatson ${_crunchide} \ 881101099Srwatson ${_elf2exe} \ 882101099Srwatson ${_kgzip} 883101099Srwatson ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 884105988Srwatson cd ${.CURDIR}/${_tool}; \ 885105988Srwatson ${MAKE} DIRPRFX=${_tool}/ obj; \ 886101099Srwatson ${MAKE} DIRPRFX=${_tool}/ depend; \ 887105988Srwatson ${MAKE} DIRPRFX=${_tool}/ all; \ 888106354Smux ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install 889101099Srwatson.endfor 890105988Srwatson 891105988Srwatson# 892101099Srwatson# hierarchy - ensure that all the needed directories are present 893105988Srwatson# 894105988Srwatsonhierarchy: 895105988Srwatson cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 896105988Srwatson 897105988Srwatson# 898105988Srwatson# libraries - build all libraries, and install them under ${DESTDIR}. 899105988Srwatson# 900132232Srwatson# The list of libraries with dependents (${_prebuild_libs}) and their 901105988Srwatson# interdependencies (__L) are built automatically by the 902105988Srwatson# ${.CURDIR}/tools/make_libdeps.sh script. 903101099Srwatson# 904101099Srwatsonlibraries: 905105988Srwatson cd ${.CURDIR}; \ 906105988Srwatson ${MAKE} -f Makefile.inc1 _startup_libs; \ 907105988Srwatson ${MAKE} -f Makefile.inc1 _prebuild_libs; \ 908105988Srwatson ${MAKE} -f Makefile.inc1 _generic_libs; 909105988Srwatson 910105988Srwatson# These dependencies are not automatically generated: 911105988Srwatson# 912105988Srwatson# gnu/lib/csu, gnu/lib/libgcc and lib/csu must be built before all 913105988Srwatson# shared libraries for ELF. 914132232Srwatson# 915132232Srwatson_startup_libs= gnu/lib/csu gnu/lib/libgcc 916105988Srwatson.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) 917105988Srwatson_startup_libs+= lib/csu/${MACHINE_ARCH}-elf 918101099Srwatson.else 919132232Srwatson_startup_libs+= lib/csu/${MACHINE_ARCH} 920101099Srwatson.endif 921101099Srwatson 922101099Srwatson_prebuild_libs= 923101099Srwatson 924105988Srwatson_generic_libs= gnu/lib 925105988Srwatson 926101099Srwatson.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 927101099Srwatson_prebuild_libs+= kerberos5/lib/libasn1 928101099Srwatson_prebuild_libs+= kerberos5/lib/libgssapi 929101099Srwatson_prebuild_libs+= kerberos5/lib/libkrb5 930105988Srwatson_prebuild_libs+= kerberos5/lib/libroken 931101099Srwatson_generic_libs+= kerberos5/lib 932132232Srwatson.endif 933101099Srwatson 934101099Srwatson_prebuild_libs+= lib/libcom_err lib/libcrypt lib/libexpat \ 935105988Srwatson lib/libkvm lib/libmd \ 936105988Srwatson lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ 937105988Srwatson lib/libradius \ 938105988Srwatson lib/libsbuf lib/libtacplus lib/libutil \ 939105988Srwatson lib/libz lib/msun 940105988Srwatson 941105988Srwatsonlib/libopie__L lib/libtacplus__L: lib/libmd__L 942105988Srwatson 943105988Srwatson.if !defined(NO_BIND) 944105988Srwatson.if ${MACHINE_ARCH} == "alpha" || ${MACHINE_ARCH} == "sparc64" 945105988Srwatson_prebuild_libs+= lib/libc_r 946105988Srwatson.else 947122524Srwatson_prebuild_libs+= lib/libpthread 948105988Srwatson.endif 949132232Srwatson.endif 950105988Srwatson 951105988Srwatson_generic_libs+= lib 952105988Srwatson 953105988Srwatson.if !defined(NO_CRYPT) 954132232Srwatson.if !defined(NO_OPENSSL) 955105988Srwatson_prebuild_libs+= secure/lib/libcrypto secure/lib/libssl 956105988Srwatsonlib/libradius__L: secure/lib/libssl__L 957105988Srwatsonsecure/lib/libssl__L: secure/lib/libcrypto__L 958105988Srwatson.if !defined(NO_OPENSSH) 959105988Srwatson_prebuild_libs+= secure/lib/libssh 960105988Srwatsonsecure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L 961105988Srwatson.if !defined(NO_KERBEROS) 962105988Srwatsonsecure/lib/libssh__L: kerberos5/lib/libgssapi__L kerberos5/lib/libkrb5__L \ 963105988Srwatson kerberos5/lib/libasn1__L lib/libcom_err__L lib/libmd__L \ 964105988Srwatson kerberos5/lib/libroken__L 965105988Srwatson.endif 966105988Srwatson.endif 967105988Srwatson.endif 968105988Srwatson_generic_libs+= secure/lib 969105988Srwatson.endif 970132232Srwatson 971105988Srwatson.if defined(NO_CRYPT) || defined(NO_OPENSSL) 972105988Srwatsonlib/libradius__L: lib/libmd__L 973132232Srwatson.endif 974105988Srwatson 975105988Srwatson.if !defined(NO_NIS) 976105988Srwatson_prebuild_libs+= lib/libypclnt 977105988Srwatson.endif 978105988Srwatson 979105988Srwatson_generic_libs+= usr.bin/lex/lib 980101099Srwatson 981101099Srwatson.if ${MACHINE_ARCH} == "i386" 982101099Srwatson_generic_libs+= usr.sbin/pcvt/keycap 983101099Srwatson.endif 984122875Srwatson 985122875Srwatson.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} 986122875Srwatson${_lib}__L: .PHONY 987122875Srwatson.if exists(${.CURDIR}/${_lib}) 988122875Srwatson ${_+_}@${ECHODIR} "===> ${_lib} (depend,all,install)"; \ 989122875Srwatson cd ${.CURDIR}/${_lib}; \ 990122875Srwatson ${MAKE} DIRPRFX=${_lib}/ depend; \ 991122875Srwatson ${MAKE} DIRPRFX=${_lib}/ all; \ 992132232Srwatson ${MAKE} DIRPRFX=${_lib}/ install 993122875Srwatson.endif 994122875Srwatson.endfor 995122875Srwatson 996101099Srwatson# libpam is special: we need to build static PAM modules before 997101099Srwatson# static PAM library, and dynamic PAM library before dynamic PAM 998101099Srwatson# modules. 999101099Srwatsonlib/libpam__L: .PHONY 1000101099Srwatson ${_+_}@${ECHODIR} "===> lib/libpam (depend,all,install)"; \ 1001101099Srwatson cd ${.CURDIR}/lib/libpam; \ 1002101099Srwatson ${MAKE} DIRPRFX=lib/libpam/ depend; \ 1003101099Srwatson ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ 1004132232Srwatson ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install 1005101099Srwatson 1006101099Srwatson_startup_libs: ${_startup_libs:S/$/__L/} 1007101099Srwatson_prebuild_libs: ${_prebuild_libs:S/$/__L/} 1008101099Srwatson_generic_libs: ${_generic_libs:S/$/__L/} 1009101099Srwatson 1010101099Srwatson.for __target in all clean cleandepend cleandir depend includes obj 1011101099Srwatson.for entry in ${SUBDIR} 1012101099Srwatson${entry}.${__target}__D: .PHONY 1013122524Srwatson ${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 1014101099Srwatson ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \ 1015101099Srwatson edir=${entry}.${MACHINE_ARCH}; \ 1016132232Srwatson cd ${.CURDIR}/$${edir}; \ 1017101099Srwatson else \ 1018101099Srwatson ${ECHODIR} "===> ${DIRPRFX}${entry} (${__target})"; \ 1019101099Srwatson edir=${entry}; \ 1020125293Srwatson cd ${.CURDIR}/$${edir}; \ 1021101099Srwatson fi; \ 1022101099Srwatson ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 1023101099Srwatson.endfor 1024101099Srwatsonpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 1025122524Srwatson.endfor 1026101099Srwatson 1027101099Srwatson.include <bsd.subdir.mk> 1028132232Srwatson