Makefile.inc1 revision 148389
159243Sobrien# 259243Sobrien# $FreeBSD: head/Makefile.inc1 148389 2005-07-25 14:44:11Z des $ 359243Sobrien# 459243Sobrien# Make command line options: 559243Sobrien# -DNO_DYNAMICROOT do not link /bin and /sbin dynamically 659243Sobrien# -DNO_KERBEROS Do not build Heimdal (Kerberos 5) 759243Sobrien# -DNO_RESCUE do not build rescue binaries 859243Sobrien# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 959243Sobrien# -DNO_CLEAN do not clean at all 1059243Sobrien# -DNO_CRYPT will prevent building of crypt versions 1159243Sobrien# -DNO_MAN do not build the manual pages 12100616Smp# -DNO_NLS do not build Native Language Support files 1359243Sobrien# -DNO_PROFILE do not build profiled libraries 1459243Sobrien# -DNO_GAMES do not go into games subdir 1559243Sobrien# -DNO_SHARE do not go into share subdir 1659243Sobrien# -DNO_INFO do not make or install info files 1759243Sobrien# -DNO_LIBC_R do not build libc_r. 1859243Sobrien# -DNO_FORTRAN do not build g77 and related libraries. 1959243Sobrien# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel 2059243Sobrien# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel 2159243Sobrien# -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel 2259243Sobrien# -DNO_PORTSUPDATE do not update ports in ${MAKE} update 2359243Sobrien# -DNO_DOCUPDATE do not update doc in ${MAKE} update 2459243Sobrien# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 2559243Sobrien# TARGET_ARCH="arch" to crossbuild world to a different arch 2659243Sobrien 2759243Sobrien# 2859415Sobrien# The intended user-driven targets are: 2959243Sobrien# buildworld - rebuild *everything*, including glue to help do upgrades 3059243Sobrien# installworld- install everything built by "buildworld" 3159243Sobrien# update - convenient way to update your source tree (eg: cvsup/cvs) 3259243Sobrien# 3359243Sobrien# Standard targets (not defined here) are documented in the makefiles in 3459243Sobrien# /usr/share/mk. These include: 3559243Sobrien# obj depend all install clean cleandepend cleanobj 3659243Sobrien 3759415Sobrien# We must do share/info early so that installation of info `dir' 3859243Sobrien# entries works correctly. Do it first since it is less likely to 3959415Sobrien# grow dependencies on include and lib than vice versa. 4059243Sobrien# 4159243Sobrien# We must do lib and libexec before bin, because if installworld 4259243Sobrien# installs a new /bin/sh, the 'make' command will *immediately* 4359243Sobrien# use that new version. And the new (dynamically-linked) /bin/sh 4459243Sobrien# will expect to find appropriate libraries in /lib and /libexec. 4559243Sobrien# 4659243Sobrien# We must do etc last for install/distribute to work. 4759243Sobrien# 4859415SobrienSUBDIR= share/info include lib libexec bin 4959243Sobrien.if !defined(NO_GAMES) 5059415SobrienSUBDIR+=games 5159415Sobrien.endif 5259243SobrienSUBDIR+=gnu 5359243Sobrien.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 5459243SobrienSUBDIR+=kerberos5 5559243Sobrien.endif 5659243Sobrien.if !defined(NO_RESCUE) 5759243SobrienSUBDIR+=rescue 5859243Sobrien.endif 5959243SobrienSUBDIR+=sbin 6059243Sobrien.if !defined(NO_CRYPT) 6159243SobrienSUBDIR+=secure 6259243Sobrien.endif 6359243Sobrien.if !defined(NO_SHARE) 6459243SobrienSUBDIR+=share 6559243Sobrien.endif 6659243SobrienSUBDIR+=sys usr.bin usr.sbin etc 6759243Sobrien 6859243Sobrien# These are last, since it is nice to at least get the base system 6959243Sobrien# rebuilt before you do them. 7059243Sobrien.for _DIR in ${LOCAL_DIRS} 7159415Sobrien.if exists(${.CURDIR}/${_DIR}/Makefile) 7259243SobrienSUBDIR+= ${_DIR} 7359243Sobrien.endif 7459243Sobrien.endfor 75231990Smp 7659243Sobrien.if defined(SUBDIR_OVERRIDE) 7759243SobrienSUBDIR= ${SUBDIR_OVERRIDE} 7859243Sobrien.endif 7959243Sobrien 8059243Sobrien.if defined(NOCLEAN) 8159243SobrienNO_CLEAN= ${NOCLEAN} 8259243Sobrien.endif 8359243Sobrien.if defined(NO_CLEANDIR) 8459243SobrienCLEANDIR= clean cleandepend 8559243Sobrien.else 8659243SobrienCLEANDIR= cleandir 8759243Sobrien.endif 8859243Sobrien 8959243SobrienCVS?= cvs 9059243SobrienCVSFLAGS?= -A -P -d -I! 9159243SobrienSUP?= /usr/local/bin/cvsup 9259243SobrienSUPFLAGS?= -g -L 2 -P - 9359243Sobrien.if defined(SUPHOST) 9459415SobrienSUPFLAGS+= -h ${SUPHOST} 9559243Sobrien.endif 9659243Sobrien 9759243SobrienMAKEOBJDIRPREFIX?= /usr/obj 9859243Sobrien.if !defined(OSRELDATE) 9959243Sobrien.if exists(/usr/include/osreldate.h) 10059243SobrienOSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ 10159243Sobrien /usr/include/osreldate.h 10259243Sobrien.else 10359243SobrienOSRELDATE= 0 10459243Sobrien.endif 10559243Sobrien.endif 10659243SobrienTARGET_ARCH?= ${MACHINE_ARCH} 10759243Sobrien.if ${TARGET_ARCH} == ${MACHINE_ARCH} 10859243SobrienTARGET?= ${MACHINE} 10959243SobrienTARGET_CPUTYPE?=${CPUTYPE} 11059243Sobrien.else 11159243SobrienTARGET?= ${TARGET_ARCH} 11259243SobrienTARGET_CPUTYPE?= 11359243Sobrien.endif 11459243Sobrien.if !empty(TARGET_CPUTYPE) 11559243Sobrien_TARGET_CPUTYPE=${TARGET_CPUTYPE} 11659243Sobrien.else 11759243Sobrien_TARGET_CPUTYPE=dummy 11859243Sobrien.endif 11959243Sobrien_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \ 12059243Sobrien -f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE 12159243Sobrien.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} 12259243Sobrien.error CPUTYPE global should be set with ?=. 12359243Sobrien.endif 12459243Sobrien.if make(buildworld) 12559243SobrienBUILD_ARCH!= sysctl -n hw.machine_arch 12659243Sobrien.if ${MACHINE_ARCH} != ${BUILD_ARCH} 12759243Sobrien.error To cross-build, set TARGET_ARCH. 12859243Sobrien.endif 12959243Sobrien.endif 13059243Sobrien.if ${MACHINE} == ${TARGET} && !defined(CROSS_BUILD_TESTING) 13159243SobrienOBJTREE= ${MAKEOBJDIRPREFIX} 132167465Smp.else 133167465SmpOBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET} 13459243Sobrien.endif 13559243SobrienWORLDTMP= ${OBJTREE}${.CURDIR}/tmp 136167465Smp# /usr/games added for fortune which depend on strfile 13759243SobrienBPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games 13859243SobrienXPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games 13959243SobrienSTRICTTMPPATH= ${BPATH}:${XPATH} 14059243SobrienTMPPATH= ${STRICTTMPPATH}:${PATH} 14159243Sobrien 14259243SobrienINSTALLTMP!= /usr/bin/mktemp -d -u -t install 14359243Sobrien 14459415Sobrien# 14559243Sobrien# Building a world goes through the following stages 14659243Sobrien# 14759243Sobrien# 1. legacy stage [BMAKE] 14859243Sobrien# This stage is responsible for creating compatibility 14959415Sobrien# shims that are needed by the bootstrap-tools, 15059243Sobrien# build-tools and cross-tools stages. 15159243Sobrien# 1. bootstrap-tools stage [BMAKE] 15259243Sobrien# This stage is responsible for creating programs that 15359243Sobrien# are needed for backward compatibility reasons. They 15459243Sobrien# are not built as cross-tools. 15559415Sobrien# 2. build-tools stage [TMAKE] 15659243Sobrien# This stage is responsible for creating the object 15759415Sobrien# tree and building any tools that are needed during 15859243Sobrien# the build process. 15959243Sobrien# 3. cross-tools stage [XMAKE] 16059243Sobrien# This stage is responsible for creating any tools that 16159243Sobrien# are needed for cross-builds. A cross-compiler is one 16259243Sobrien# of them. 16359243Sobrien# 4. world stage [WMAKE] 16459243Sobrien# This stage actually builds the world. 16559243Sobrien# 5. install stage (optional) [IMAKE] 16659243Sobrien# This stage installs a previously built world. 16759243Sobrien# 16859243Sobrien 16959243SobrienBOOTSTRAPPING?= 0 17059243Sobrien 17159243Sobrien# Common environment for world related stages 17259243SobrienCROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ 17359243Sobrien MACHINE_ARCH=${TARGET_ARCH} \ 17459243Sobrien MACHINE=${TARGET} \ 17559243Sobrien CPUTYPE=${TARGET_CPUTYPE} \ 17659243Sobrien GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ 17759243Sobrien GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ 17859243Sobrien GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac 179145479Smp 180145479Smp# bootstrap-tools stage 181145479SmpBMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ 182145479Smp PATH=${BPATH}:${PATH} \ 183145479Smp WORLDTMP=${WORLDTMP} \ 184145479Smp MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" 185145479SmpBMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ 18659243Sobrien ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 18759243Sobrien DESTDIR= \ 18859243Sobrien BOOTSTRAPPING=${OSRELDATE} \ 18959243Sobrien -DNO_HTML -DNO_INFO -DNO_LINT -DNO_MAN -DNO_NLS -DNO_PIC \ 19059243Sobrien -DNO_PROFILE -DNO_SHARED -DNO_CPU_CFLAGS -DNO_WARNS 19159415Sobrien 19259243Sobrien# build-tools stage 19359243SobrienTMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ 19459415Sobrien ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 19559243Sobrien DESTDIR= \ 19659243Sobrien BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS 19759243Sobrien 19859243Sobrien# cross-tools stage 19959243SobrienXMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} -DNO_FORTRAN -DNO_GDB 20059243Sobrien 20159243Sobrien# world stage 20259243SobrienWMAKEENV= ${CROSSENV} \ 20359243Sobrien _SHLIBDIRPREFIX=${WORLDTMP} \ 20459243Sobrien INSTALL="sh ${.CURDIR}/tools/install.sh" \ 20559243Sobrien PATH=${TMPPATH} 20659243SobrienWMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} 20759243Sobrien 20859243Sobrien.if ${TARGET_ARCH} == "amd64" 20959243Sobrien# 32 bit world 21059243SobrienLIB32TMP= ${OBJTREE}${.CURDIR}/lib32 21159243Sobrien 21259243SobrienLIB32PREFLAGS= -m32 -march=athlon-xp -msse2 -mfancy-math-387 -DCOMPAT_32BIT 21359243SobrienLIB32POSTFLAGS= -I${LIB32TMP}/usr/include \ 21459243Sobrien -L${LIB32TMP}/usr/lib32 \ 21583098Smp -B${LIB32TMP}/usr/lib32 21683098SmpLIB32CC= ${LIB32PREFLAGS} \ 21783098Smp ${LIB32POSTFLAGS} 21859243SobrienLIB32CXX= ${LIB32PREFLAGS} -I${LIB32TMP}/usr/include/c++/3.4 \ 21959243Sobrien ${LIB32POSTFLAGS} 22059243SobrienLIB32OBJC= ${LIB32PREFLAGS} -I${LIB32TMP}/usr/include/objc \ 22159243Sobrien ${LIB32POSTFLAGS} 22259243Sobrien 22359243Sobrien# Yes, the flags are redundant. 22459243SobrienLIB32MAKEENV= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ 22559243Sobrien _SHLIBDIRPREFIX=${LIB32TMP} \ 22659243Sobrien MACHINE=i386 \ 22759243Sobrien MACHINE_ARCH=i386 \ 22859243Sobrien INSTALL="sh ${.CURDIR}/tools/install.sh" \ 22959243Sobrien PATH=${TMPPATH} \ 23059243Sobrien CC="${CC} ${LIB32CC}" \ 23159243Sobrien CXX="${CXX} ${LIB32CXX}" \ 23259243Sobrien OBJC="${OBJC} ${LIB32OBJC}" \ 23359243Sobrien LD="${LD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \ 23459243Sobrien AS="${AS} --32" \ 23559243Sobrien LIBDIR=/usr/lib32 \ 23659243Sobrien SHLIBDIR=/usr/lib32 23759243Sobrien 23859243SobrienLIB32MAKE= ${LIB32MAKEENV} ${MAKE} -DNO_CPU_CFLAGS -DCOMPAT_32BIT \ 23959243Sobrien -DNO_BIND -DNO_MAN -DNO_NLS -DNO_INFO -DNO_HTML \ 24059415Sobrien CC="${CC} ${LIB32CC}" \ 24159243Sobrien CXX="${CXX} ${LIB32CXX}" \ 24259243Sobrien OBJC="${OBJC} ${LIB32OBJC}" \ 24359243Sobrien LD="${LD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \ 24459243Sobrien AS="${AS} --32" \ 24559243Sobrien LIBDIR=/usr/lib32 \ 24659243Sobrien SHLIBDIR=/usr/lib32 24759243Sobrien.endif 24859415Sobrien 24959243Sobrien# install stage 25059243Sobrien.if empty(.MAKEFLAGS:M-n) 25159243SobrienIMAKEENV= ${CROSSENV} \ 25259243Sobrien PATH=${STRICTTMPPATH}:${INSTALLTMP} 25359243Sobrien.else 25459243SobrienIMAKEENV= ${CROSSENV} \ 25559243Sobrien PATH=${TMPPATH}:${INSTALLTMP} 25659243Sobrien.endif 25759243SobrienIMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 25859243Sobrien 25959243Sobrien# kernel stage 26059243SobrienKMAKEENV= ${WMAKEENV} 26159243Sobrien 26259243Sobrien# 26359243Sobrien# buildworld 26459243Sobrien# 26559243Sobrien# Attempt to rebuild the entire system, with reasonable chance of 26659243Sobrien# success, regardless of how old your existing system is. 26759243Sobrien# 26859243Sobrien_worldtmp: 26959243Sobrien.if ${.CURDIR:C/[^,]//g} != "" 27059243Sobrien# The m4 build of sendmail files doesn't like it if ',' is used 27159243Sobrien# anywhere in the path of it's files. 27259243Sobrien @echo 27359243Sobrien @echo "*** Error: path to source tree contains a comma ','" 27459243Sobrien @echo 27559243Sobrien false 27659243Sobrien.endif 27759243Sobrien @echo 27859243Sobrien @echo "--------------------------------------------------------------" 27959243Sobrien @echo ">>> Rebuilding the temporary build tree" 28059243Sobrien @echo "--------------------------------------------------------------" 28159243Sobrien.if !defined(NO_CLEAN) 28259243Sobrien rm -rf ${WORLDTMP} 28359243Sobrien.else 28459243Sobrien rm -rf ${WORLDTMP}/legacy/usr/include 28559243Sobrien # XXX - These two can depend on any header file. 28659243Sobrien rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c 28759243Sobrien rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c 28859243Sobrien.endif 28959415Sobrien.for _dir in \ 29059243Sobrien usr/bin usr/games usr/include/c++/3.4 usr/include/sys usr/lib \ 29159243Sobrien usr/libexec usr/sbin usr/share/dict \ 29259243Sobrien usr/share/groff_font/devX100 \ 29359415Sobrien usr/share/groff_font/devX100-12 \ 29459243Sobrien usr/share/groff_font/devX75 \ 29559243Sobrien usr/share/groff_font/devX75-12 \ 29659243Sobrien usr/share/groff_font/devascii \ 29759243Sobrien usr/share/groff_font/devcp1047 \ 29859243Sobrien usr/share/groff_font/devdvi \ 29959243Sobrien usr/share/groff_font/devhtml \ 30059243Sobrien usr/share/groff_font/devkoi8-r \ 30159243Sobrien usr/share/groff_font/devlatin1 \ 30259243Sobrien usr/share/groff_font/devlbp \ 30359243Sobrien usr/share/groff_font/devlj4 \ 30459243Sobrien usr/share/groff_font/devps \ 30559243Sobrien usr/share/groff_font/devutf8 \ 30659243Sobrien usr/share/tmac/mdoc usr/share/tmac/mm 30759243Sobrien mkdir -p ${WORLDTMP}/legacy/${_dir} 30859243Sobrien.endfor 30959243Sobrien.for _dir in \ 31059243Sobrien lib usr/bin usr/include usr/lib/compat/aout usr/libdata/ldscripts \ 31159243Sobrien usr/libexec usr/sbin usr/share/misc \ 31259243Sobrien usr/share/snmp/defs usr/share/snmp/mibs 31359415Sobrien mkdir -p ${WORLDTMP}/${_dir} 31459415Sobrien.endfor 31559415Sobrien mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 31659243Sobrien -p ${WORLDTMP}/usr/include >/dev/null 31759243Sobrien ln -sf ${.CURDIR}/sys ${WORLDTMP} 31859243Sobrien.if defined(WITH_BIND_LIBS) && !defined(NO_BIND) 31959243Sobrien mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \ 32059243Sobrien -p ${WORLDTMP}/usr/include >/dev/null 32159243Sobrien.endif 32259243Sobrien_legacy: 32359243Sobrien @echo 32459243Sobrien @echo "--------------------------------------------------------------" 32559243Sobrien @echo ">>> stage 1.1: legacy release compatibility shims" 32659243Sobrien @echo "--------------------------------------------------------------" 32759243Sobrien ${_+_}cd ${.CURDIR}; ${BMAKE} legacy 32859243Sobrien_bootstrap-tools: 32959243Sobrien @echo 33059243Sobrien @echo "--------------------------------------------------------------" 33159415Sobrien @echo ">>> stage 1.2: bootstrap tools" 33259243Sobrien @echo "--------------------------------------------------------------" 33359243Sobrien ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools 33459243Sobrien_cleanobj: 33559243Sobrien.if !defined(NO_CLEAN) 33659243Sobrien @echo 33759243Sobrien @echo "--------------------------------------------------------------" 33859243Sobrien @echo ">>> stage 2.1: cleaning up the object tree" 33959243Sobrien @echo "--------------------------------------------------------------" 34059243Sobrien ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/} 34159243Sobrien.endif 34259243Sobrien_obj: 34359243Sobrien @echo 34459243Sobrien @echo "--------------------------------------------------------------" 34559243Sobrien @echo ">>> stage 2.2: rebuilding the object tree" 34659243Sobrien @echo "--------------------------------------------------------------" 34759243Sobrien ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj 34859243Sobrien_build-tools: 34959243Sobrien @echo 35059243Sobrien @echo "--------------------------------------------------------------" 35159243Sobrien @echo ">>> stage 2.3: build tools" 35259243Sobrien @echo "--------------------------------------------------------------" 35359243Sobrien ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools 35459243Sobrien_cross-tools: 35559243Sobrien @echo 35659243Sobrien @echo "--------------------------------------------------------------" 35759243Sobrien @echo ">>> stage 3: cross tools" 35859243Sobrien @echo "--------------------------------------------------------------" 35959243Sobrien ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools 36059243Sobrien_includes: 36159415Sobrien @echo 36259243Sobrien @echo "--------------------------------------------------------------" 36359243Sobrien @echo ">>> stage 4.1: building includes" 36459243Sobrien @echo "--------------------------------------------------------------" 36559243Sobrien ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes 36659243Sobrien_libraries: 36759243Sobrien @echo 36859243Sobrien @echo "--------------------------------------------------------------" 36959243Sobrien @echo ">>> stage 4.2: building libraries" 37059243Sobrien @echo "--------------------------------------------------------------" 37159243Sobrien ${_+_}cd ${.CURDIR}; \ 37259243Sobrien ${WMAKE} -DNO_FSCHG -DNO_HTML -DNO_INFO -DNO_LINT -DNO_MAN \ 37359243Sobrien -DNO_NLS -DNO_PROFILE libraries 37459243Sobrien_depend: 37559243Sobrien @echo 37659243Sobrien @echo "--------------------------------------------------------------" 37759243Sobrien @echo ">>> stage 4.3: make dependencies" 37859243Sobrien @echo "--------------------------------------------------------------" 37959415Sobrien ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend 38059243Sobrieneverything: 38159243Sobrien @echo 38259243Sobrien @echo "--------------------------------------------------------------" 38359243Sobrien @echo ">>> stage 4.4: building everything" 38459243Sobrien @echo "--------------------------------------------------------------" 38559243Sobrien ${_+_}cd ${.CURDIR}; ${WMAKE} par-all 38659415Sobrien.if ${TARGET_ARCH} == "amd64" 38759243Sobrienbuild32: 38859243Sobrien @echo 38959243Sobrien @echo "--------------------------------------------------------------" 39059243Sobrien @echo ">>> stage 5.1: building 32 bit shim libraries" 39159415Sobrien @echo "--------------------------------------------------------------" 39259243Sobrien.for _dir in \ 39359243Sobrien lib lib32 usr/bin usr/include usr/lib32 usr/libdata/ldscripts \ 39459243Sobrien usr/libexec usr/sbin usr/share/misc \ 39559243Sobrien usr/share/snmp/defs usr/share/snmp/mibs 39659243Sobrien mkdir -p ${LIB32TMP}/${_dir} 39759243Sobrien.endfor 39859243Sobrien mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 39959243Sobrien -p ${LIB32TMP}/usr/include >/dev/null 40059243Sobrien ln -sf ${.CURDIR}/sys ${WORLDTMP} 40159415Sobrien.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 40259243Sobrien.for _t in obj depend all 40359243Sobrien cd ${.CURDIR}/kerberos5/tools; \ 40459243Sobrien MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= ${_t} 40559243Sobrien.endfor 40659243Sobrien.endif 40759243Sobrien.for _t in obj includes 40859243Sobrien cd ${.CURDIR}/include; \ 40959243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 41059243Sobrien cd ${.CURDIR}/lib; \ 41159243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 41259243Sobrien cd ${.CURDIR}/gnu/lib; \ 41359243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 41459243Sobrien.if !defined(NO_CRYPT) 41559243Sobrien cd ${.CURDIR}/secure/lib; \ 41659243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 41759243Sobrien.endif 41859243Sobrien.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 41959243Sobrien cd ${.CURDIR}/kerberos5/lib; \ 42059243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 42159243Sobrien.endif 42259243Sobrien.endfor 42359243Sobrien.for _dir in usr.sbin/pcvt/keycap usr.bin/lex/lib 42459243Sobrien cd ${.CURDIR}/${_dir}; \ 42559243Sobrien ${LIB32MAKE} DESTDIR=${LIB32TMP} obj 42659243Sobrien.endfor 42759243Sobrien.for _dir in lib/libncurses lib/libmagic 42859243Sobrien cd ${.CURDIR}/${_dir}; \ 42959243Sobrien MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= build-tools 43059415Sobrien.endfor 43159243Sobrien cd ${.CURDIR}; \ 43259243Sobrien ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries 43359243Sobrien.for _t in obj depend all 43459243Sobrien cd ${.CURDIR}/libexec/rtld-elf; \ 43559243Sobrien PROG=ld-elf32.so.1 ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} 43659243Sobrien.endfor 43759243Sobrien 43859415Sobriendistribute32 install32: 43959243Sobrien.if make(distribute32) 44059243Sobrien mkdir -p ${DISTDIR}/${DISTRIBUTION}/usr/lib32 # XXX add to mtree 44159243Sobrien.else 44259243Sobrien mkdir -p ${DESTDIR}/usr/lib32 # XXX add to mtree 44359243Sobrien.endif 44459415Sobrien cd ${.CURDIR}/lib; ${LIB32MAKE} ${.TARGET:S/32$//} 44559243Sobrien cd ${.CURDIR}/gnu/lib; ${LIB32MAKE} ${.TARGET:S/32$//} 44659243Sobrien.if !defined(NO_CRYPT) 447231990Smp cd ${.CURDIR}/secure/lib; ${LIB32MAKE} ${.TARGET:S/32$//} 448231990Smp.endif 449231990Smp cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32MAKE} ${.TARGET:S/32$//} 450231990Smp.endif 451231990Smp 452231990Smp 453231990SmpWMAKE_TGTS= 454231990Smp.if !defined(SUBDIR_OVERRIDE) 455231990SmpWMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools 456231990Smp.endif 457231990SmpWMAKE_TGTS+= _cleanobj _obj _build-tools 45859243Sobrien.if !defined(SUBDIR_OVERRIDE) 45959243SobrienWMAKE_TGTS+= _cross-tools 46059243Sobrien.endif 46159243SobrienWMAKE_TGTS+= _includes _libraries _depend everything 46259243Sobrien.if ${TARGET_ARCH} == "amd64" && !defined(NO_LIB32) 46359243SobrienWMAKE_TGTS+= build32 46459243Sobrien.endif 46559243Sobrien 46659243Sobrienbuildworld: ${WMAKE_TGTS} 46759243Sobrien.ORDER: ${WMAKE_TGTS} 46859243Sobrien 46959243Sobrienbuildenv: 47059243Sobrien @echo Entering world for ${TARGET_ARCH}:${TARGET} 47159243Sobrien @cd ${.CURDIR} && env ${WMAKEENV} sh || true 47259243Sobrien 47359243SobrienTOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything:Nbuild32} 47459243Sobrientoolchain: ${TOOLCHAIN_TGTS} 47559243Sobrienkernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} 47659243Sobrien 47759243Sobrien# 47859243Sobrien# Use this to add checks to installworld/installkernel targets. 47959243Sobrien# 48059243SobrienSPECIAL_INSTALLCHECKS= 48159243Sobrien 48259243Sobrien# 48359243Sobrien# installcheck 48459243Sobrien# 48559243Sobrien# Checks to be sure system is ready for installworld 48659415Sobrien# 48759243SobrienCHECK_UIDS= 48859243SobrienCHECK_GIDS= 48959243Sobrien.if !defined(NO_SENDMAIL) 49059243SobrienCHECK_UIDS+= smmsp 49159243SobrienCHECK_GIDS+= smmsp 49259243Sobrien.endif 49359243Sobrien.if !defined(NO_PF) 49459243SobrienCHECK_UIDS+= proxy 49559243SobrienCHECK_GIDS+= proxy authpf 49659243Sobrien.endif 49759243Sobrieninstallcheck: ${SPECIAL_INSTALLCHECKS} 49859243Sobrien.for uid in ${CHECK_UIDS} 49959243Sobrien @if ! `id -u ${uid} >/dev/null 2>&1`; then \ 50059243Sobrien echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \ 50159243Sobrien false; \ 50259243Sobrien fi 50359243Sobrien.endfor 50459243Sobrien.for gid in ${CHECK_GIDS} 50559243Sobrien @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \ 50659243Sobrien echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \ 50759243Sobrien false; \ 50859243Sobrien fi 50959243Sobrien.endfor 51059243Sobrien 51159243Sobrien# 51259243Sobrien# distributeworld 51359243Sobrien# 51459243Sobrien# Distributes everything compiled by a `buildworld'. 51559243Sobrien# 51659243Sobrien# installworld 51759243Sobrien# 51859243Sobrien# Installs everything compiled by a 'buildworld'. 51959243Sobrien# 52059243Sobriendistributeworld installworld: installcheck 52159243Sobrien mkdir -p ${INSTALLTMP} 52259243Sobrien for prog in [ awk cap_mkdb cat chflags chmod chown \ 52359243Sobrien date echo egrep find grep install-info \ 52459243Sobrien ln make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ 52559243Sobrien test true uname wc zic; do \ 52659243Sobrien cp `which $$prog` ${INSTALLTMP}; \ 52759415Sobrien done 52859243Sobrien ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//} 52959243Sobrien rm -rf ${INSTALLTMP} 53059415Sobrien 53159243Sobrien# 53259243Sobrien# reinstall 53359243Sobrien# 53459243Sobrien# If you have a build server, you can NFS mount the source and obj directories 53559243Sobrien# and do a 'make reinstall' on the *client* to install new binaries from the 53659243Sobrien# most recent server build. 53759243Sobrien# 53859243Sobrienreinstall: ${SPECIAL_INSTALLCHECKS} 53959415Sobrien @echo "--------------------------------------------------------------" 54059243Sobrien @echo ">>> Making hierarchy" 54159243Sobrien @echo "--------------------------------------------------------------" 54259243Sobrien ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 54359243Sobrien @echo 54459243Sobrien @echo "--------------------------------------------------------------" 54559243Sobrien @echo ">>> Installing everything" 54659243Sobrien @echo "--------------------------------------------------------------" 54759243Sobrien ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 54859243Sobrien.if ${TARGET_ARCH} == "amd64" && !defined(NO_LIB32) 54959415Sobrien ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 55059243Sobrien.endif 55159415Sobrien 55259243Sobrienredistribute: 55359243Sobrien @echo "--------------------------------------------------------------" 55459243Sobrien @echo ">>> Distributing everything" 55559243Sobrien @echo "--------------------------------------------------------------" 55659243Sobrien ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute 55759243Sobrien.if ${TARGET_ARCH} == "amd64" && !defined(NO_LIB32) 55859243Sobrien ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 DISTRIBUTION=lib32 55959243Sobrien.endif 56059243Sobrien 56159243Sobriendistrib-dirs distribution: 56259243Sobrien cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} ${.TARGET} 56359415Sobrien 56459243Sobrien# 56559243Sobrien# buildkernel and installkernel 56659243Sobrien# 56759243Sobrien# Which kernels to build and/or install is specified by setting 56859243Sobrien# KERNCONF. If not defined a GENERIC kernel is built/installed. 56959243Sobrien# Only the existing (depending TARGET) config files are used 57059243Sobrien# for building kernels and only the first of these is designated 57159243Sobrien# as the one being installed. 57259243Sobrien# 57359243Sobrien# Note that we have to use TARGET instead of TARGET_ARCH when 57459243Sobrien# we're in kernel-land. Since only TARGET_ARCH is (expected) to 57559243Sobrien# be set to cross-build, we have to make sure TARGET is set 57659243Sobrien# properly. 57759243Sobrien 57859243Sobrien.if !defined(KERNCONF) && defined(KERNEL) 57959243SobrienKERNCONF= ${KERNEL} 58059243SobrienKERNWARN= 58159243Sobrien.else 58259243SobrienKERNCONF?= GENERIC 58359243Sobrien.endif 58459243SobrienINSTKERNNAME?= kernel 58559243Sobrien 58659243SobrienKERNSRCDIR?= ${.CURDIR}/sys 58759243SobrienKRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf 58859243SobrienKRNLOBJDIR= ${OBJTREE}${KERNSRCDIR} 58959243SobrienKERNCONFDIR?= ${KRNLCONFDIR} 59059243Sobrien 59159243SobrienBUILDKERNELS= 59259243SobrienINSTALLKERNEL= 59359243Sobrien.for _kernel in ${KERNCONF} 59459243Sobrien.if exists(${KERNCONFDIR}/${_kernel}) 59559243SobrienBUILDKERNELS+= ${_kernel} 59659243Sobrien.if empty(INSTALLKERNEL) 59759243SobrienINSTALLKERNEL= ${_kernel} 59859243Sobrien.endif 59959415Sobrien.endif 60059243Sobrien.endfor 60159243Sobrien 60259243Sobrien# 60359243Sobrien# buildkernel 60459243Sobrien# 60559243Sobrien# Builds all kernels defined by BUILDKERNELS. 60659243Sobrien# 60759243Sobrienbuildkernel: 60859243Sobrien.if empty(BUILDKERNELS) 60959243Sobrien @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \ 61059243Sobrien false 61159243Sobrien.endif 61259243Sobrien.if defined(KERNWARN) 61359243Sobrien @echo "--------------------------------------------------------------" 61459243Sobrien @echo ">>> WARNING: KERNEL= setting should be changed to KERNCONF=" 61559243Sobrien @echo "--------------------------------------------------------------" 61659243Sobrien @sleep 3 61759243Sobrien.endif 61859243Sobrien @echo 61959243Sobrien.for _kernel in ${BUILDKERNELS} 62059243Sobrien @echo "--------------------------------------------------------------" 62159243Sobrien @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" 62259243Sobrien @echo "--------------------------------------------------------------" 623231990Smp @echo "===> ${_kernel}" 62459243Sobrien mkdir -p ${KRNLOBJDIR} 62559243Sobrien.if !defined(NO_KERNELCONFIG) 62659243Sobrien @echo 62759243Sobrien @echo "--------------------------------------------------------------" 62859243Sobrien @echo ">>> stage 1: configuring the kernel" 62959243Sobrien @echo "--------------------------------------------------------------" 63059243Sobrien cd ${KRNLCONFDIR}; \ 63159243Sobrien PATH=${TMPPATH} \ 63259243Sobrien config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ 63359243Sobrien ${KERNCONFDIR}/${_kernel} 63459243Sobrien.endif 63559243Sobrien.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) 63659243Sobrien @echo 63759243Sobrien @echo "--------------------------------------------------------------" 63859243Sobrien @echo ">>> stage 2.1: cleaning up the object tree" 63959243Sobrien @echo "--------------------------------------------------------------" 64059243Sobrien cd ${KRNLOBJDIR}/${_kernel}; \ 64159243Sobrien ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} ${CLEANDIR} 64259243Sobrien.endif 64359243Sobrien @echo 64459243Sobrien @echo "--------------------------------------------------------------" 64559243Sobrien @echo ">>> stage 2.2: rebuilding the object tree" 64659415Sobrien @echo "--------------------------------------------------------------" 64759243Sobrien cd ${KRNLOBJDIR}/${_kernel}; \ 64859243Sobrien ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} obj 64959243Sobrien @echo 65059243Sobrien @echo "--------------------------------------------------------------" 65159243Sobrien @echo ">>> stage 2.3: build tools" 65259243Sobrien @echo "--------------------------------------------------------------" 65359243Sobrien cd ${KRNLOBJDIR}/${_kernel}; \ 65459243Sobrien MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ 65559243Sobrien ${MAKE} -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile 65659243Sobrien# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. 65759243Sobrien.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) 65859243Sobrien.for target in obj depend all 65959243Sobrien cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ 66059243Sobrien MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ 66159243Sobrien ${MAKE} -DNO_CPU_CFLAGS ${target} 66259243Sobrien.endfor 66359243Sobrien.endif 66459243Sobrien.if !defined(NO_KERNELDEPEND) 66559243Sobrien @echo 66659243Sobrien @echo "--------------------------------------------------------------" 66759243Sobrien @echo ">>> stage 3.1: making dependencies" 66859243Sobrien @echo "--------------------------------------------------------------" 66959243Sobrien cd ${KRNLOBJDIR}/${_kernel}; \ 67059243Sobrien ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend -DNO_MODULES_OBJ 67159243Sobrien.endif 67259243Sobrien @echo 67359243Sobrien @echo "--------------------------------------------------------------" 67459243Sobrien @echo ">>> stage 3.2: building everything" 67559415Sobrien @echo "--------------------------------------------------------------" 67659243Sobrien cd ${KRNLOBJDIR}/${_kernel}; \ 67759243Sobrien ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} all -DNO_MODULES_OBJ 67859243Sobrien @echo "--------------------------------------------------------------" 67959243Sobrien @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`" 68059243Sobrien @echo "--------------------------------------------------------------" 68159243Sobrien.endfor 68259243Sobrien 68359243Sobrien# 68459243Sobrien# installkernel, etc. 68559243Sobrien# 68659243Sobrien# Install the kernel defined by INSTALLKERNEL 68759243Sobrien# 68859243Sobrieninstallkernel installkernel.debug \ 68959243Sobrienreinstallkernel reinstallkernel.debug: ${SPECIAL_INSTALLCHECKS} 69059243Sobrien.if empty(INSTALLKERNEL) 69159243Sobrien @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ 69259243Sobrien false 69359243Sobrien.endif 69459243Sobrien @echo "--------------------------------------------------------------" 69559243Sobrien @echo ">>> Making hierarchy" 69659243Sobrien @echo "--------------------------------------------------------------" 69759243Sobrien cd ${.CURDIR}; \ 69859243Sobrien ${CROSSENV} PATH=${TMPPATH} ${MAKE} -f Makefile.inc1 hierarchy 69959243Sobrien @echo 70059243Sobrien @echo "--------------------------------------------------------------" 70159243Sobrien @echo ">>> Installing kernel" 70259243Sobrien @echo "--------------------------------------------------------------" 70359243Sobrien cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 70459243Sobrien ${CROSSENV} PATH=${TMPPATH} \ 70559243Sobrien ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} 706131962Smp 70759415Sobrien# 70859243Sobrien# update 70959243Sobrien# 71059243Sobrien# Update the source tree, by running cvsup and/or running cvs to update to the 71159243Sobrien# latest copy. 71259415Sobrien# 71359415Sobrienupdate: 71459415Sobrien.if defined(SUP_UPDATE) 71559243Sobrien @echo "--------------------------------------------------------------" 71659243Sobrien @echo ">>> Running ${SUP}" 71759243Sobrien @echo "--------------------------------------------------------------" 71859243Sobrien.if defined(SUPFILE) 71959243Sobrien @${SUP} ${SUPFLAGS} ${SUPFILE} 72059243Sobrien.endif 72159243Sobrien.if defined(SUPFILE1) 72259243Sobrien @${SUP} ${SUPFLAGS} ${SUPFILE1} 72359243Sobrien.endif 72459243Sobrien.if defined(SUPFILE2) 72559243Sobrien @${SUP} ${SUPFLAGS} ${SUPFILE2} 72659243Sobrien.endif 72759243Sobrien.if defined(PORTSSUPFILE) && !defined(NO_PORTSUPDATE) 72859243Sobrien @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 72959243Sobrien.endif 73059243Sobrien.if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) 73159243Sobrien @${SUP} ${SUPFLAGS} ${DOCSUPFILE} 73259243Sobrien.endif 73359243Sobrien.endif 73459243Sobrien.if defined(CVS_UPDATE) 73559415Sobrien @echo "--------------------------------------------------------------" 73659243Sobrien @echo ">>> Updating ${.CURDIR} from CVS repository" ${CVSROOT} 73759243Sobrien @echo "--------------------------------------------------------------" 73859415Sobrien cd ${.CURDIR}; ${CVS} -R -q update ${CVSFLAGS} 73959243Sobrien.endif 74059243Sobrien 74159243Sobrien# 74259243Sobrien# ------------------------------------------------------------------------ 74359243Sobrien# 74459243Sobrien# From here onwards are utility targets used by the 'make world' and 74559243Sobrien# related targets. If your 'world' breaks, you may like to try to fix 74659243Sobrien# the problem and manually run the following targets to attempt to 74759243Sobrien# complete the build. Beware, this is *not* guaranteed to work, you 74859243Sobrien# need to have a pretty good grip on the current state of the system 74959243Sobrien# to attempt to manually finish it. If in doubt, 'make world' again. 75059243Sobrien# 75159243Sobrien 75259243Sobrien# 75359243Sobrien# legacy: Build compatibility shims for the next three targets 75459415Sobrien# 75559243Sobrienlegacy: 75659415Sobrien.if ${BOOTSTRAPPING} < 503000 75759243Sobrien @echo "ERROR: Source upgrades from versions prior to 5.3 not supported."; \ 75859243Sobrien false 75959243Sobrien.endif 76059243Sobrien.for _tool in tools/build 76159243Sobrien ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \ 76259243Sobrien cd ${.CURDIR}/${_tool}; \ 76359243Sobrien ${MAKE} DIRPRFX=${_tool}/ obj; \ 76459243Sobrien ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \ 76559243Sobrien ${MAKE} DIRPRFX=${_tool}/ depend; \ 76659243Sobrien ${MAKE} DIRPRFX=${_tool}/ all; \ 76759243Sobrien ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 76859243Sobrien.endfor 76959243Sobrien 77059243Sobrien# 77159243Sobrien# bootstrap-tools: Build tools needed for compatibility 77259243Sobrien# 77359243Sobrien.if !defined(NO_GAMES) 77459243Sobrien_strfile= games/fortune/strfile 77559243Sobrien.endif 77659243Sobrien 77759243Sobrien.if !defined(NO_CXX) 77859243Sobrien_gperf= gnu/usr.bin/gperf 77959243Sobrien.if ${BOOTSTRAPPING} < 500113 78059243Sobrien_groff= gnu/usr.bin/groff 78159243Sobrien.else 78259243Sobrien_groff= gnu/usr.bin/groff/tmac 78359243Sobrien.endif 78459243Sobrien.endif 78559243Sobrien 78659243Sobrien.if ${BOOTSTRAPPING} < 600029 78759415Sobrien_texinfo= gnu/usr.bin/texinfo 78859243Sobrien.endif 78959243Sobrien 79059243Sobrien.if ${BOOTSTRAPPING} < 600015 79159243Sobrien_cap_mkdb= usr.bin/cap_mkdb 79259243Sobrien.endif 79359243Sobrien 79459243Sobrien.if ${BOOTSTRAPPING} < 600018 79559243Sobrien_colldef= usr.bin/colldef 79659243Sobrien.endif 79759243Sobrien 79859243Sobrien.if ${BOOTSTRAPPING} < 600017 799131962Smp_gencat= usr.bin/gencat 800131962Smp.endif 801131962Smp 802131962Smp.if ${BOOTSTRAPPING} < 600016 803131962Smp_mklocale= usr.bin/mklocale 804131962Smp.endif 805131962Smp 806131962Smp.if !defined(NO_RESCUE) && \ 80759243Sobrien ${BOOTSTRAPPING} < 600008 80859243Sobrien_crunchgen= usr.sbin/crunch/crunchgen 80959243Sobrien.endif 81059243Sobrien 81159243Sobrien.if ${BOOTSTRAPPING} < 600020 81259243Sobrien_pwd_mkdb= usr.sbin/pwd_mkdb 81359243Sobrien.endif 81459415Sobrien 81559243Sobrienbootstrap-tools: 81659243Sobrien.for _tool in \ 81759243Sobrien ${_strfile} \ 81859243Sobrien ${_gperf} \ 81959243Sobrien ${_groff} \ 82059415Sobrien ${_texinfo} \ 82159243Sobrien ${_cap_mkdb} \ 82259243Sobrien ${_colldef} \ 82359243Sobrien ${_gencat} \ 82459243Sobrien usr.bin/lorder \ 82559243Sobrien usr.bin/makewhatis \ 82659243Sobrien ${_mklocale} \ 82759415Sobrien usr.bin/rpcgen \ 82859415Sobrien usr.bin/xinstall \ 82959243Sobrien usr.sbin/config \ 83059415Sobrien ${_crunchgen} \ 83159243Sobrien ${_pwd_mkdb} 83259243Sobrien ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 83359243Sobrien cd ${.CURDIR}/${_tool}; \ 83459243Sobrien ${MAKE} DIRPRFX=${_tool}/ obj; \ 83559243Sobrien ${MAKE} DIRPRFX=${_tool}/ depend; \ 83659243Sobrien ${MAKE} DIRPRFX=${_tool}/ all; \ 83759243Sobrien ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 83859243Sobrien.endfor 83959243Sobrien 84059415Sobrien# 84159243Sobrien# build-tools: Build special purpose build tools 84259243Sobrien# 84359243Sobrien.if defined(MODULES_WITH_WORLD) && exists(${KERNSRCDIR}/modules) 84459415Sobrien_aicasm= sys/modules/aic7xxx/aicasm 84559415Sobrien.endif 84659243Sobrien 84759243Sobrien.if !defined(NO_SHARE) 84859243Sobrien_share= share/syscons/scrnmaps 84959243Sobrien.endif 85059415Sobrien 85159243Sobrien.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 85259243Sobrien_kerberos5_tools= kerberos5/tools 85359243Sobrien.endif 85459415Sobrien 85559415Sobrien.if !defined(NO_RESCUE) 85659243Sobrien_rescue= rescue/rescue 85759243Sobrien.endif 85859243Sobrien 85959243Sobrienbuild-tools: 86059415Sobrien.for _tool in \ 86159243Sobrien bin/csh \ 86259243Sobrien bin/sh \ 86359243Sobrien ${_rescue} \ 86459243Sobrien lib/libncurses \ 86559243Sobrien ${_share} \ 86659243Sobrien ${_aicasm} \ 86759243Sobrien usr.bin/awk \ 86859243Sobrien lib/libmagic \ 86959243Sobrien usr.sbin/sysinstall 87059243Sobrien ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ 87159243Sobrien cd ${.CURDIR}/${_tool}; \ 87259243Sobrien ${MAKE} DIRPRFX=${_tool}/ obj; \ 87359243Sobrien ${MAKE} DIRPRFX=${_tool}/ build-tools 874231990Smp.endfor 87559243Sobrien.for _tool in \ 87659243Sobrien gnu/usr.bin/cc/cc_tools \ 87759243Sobrien ${_kerberos5_tools} 87859243Sobrien ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \ 87959243Sobrien cd ${.CURDIR}/${_tool}; \ 88059243Sobrien ${MAKE} DIRPRFX=${_tool}/ obj; \ 88159243Sobrien ${MAKE} DIRPRFX=${_tool}/ depend; \ 88259415Sobrien ${MAKE} DIRPRFX=${_tool}/ all 88359243Sobrien.endfor 88459243Sobrien 88559243Sobrien# 88659243Sobrien# cross-tools: Build cross-building tools 88759415Sobrien# 88859415Sobrien.if (${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386") && \ 88959243Sobrien ${TARGET_ARCH} != ${MACHINE_ARCH} 89059243Sobrien_btxld= usr.sbin/btxld 89159243Sobrien.endif 89259243Sobrien 89359243Sobrien.if (!defined(NO_RESCUE) || defined(RELEASEDIR)) && \ 89459243Sobrien ${TARGET_ARCH} != ${MACHINE_ARCH} 89559243Sobrien_crunchide= usr.sbin/crunch/crunchide 89659243Sobrien.endif 89759243Sobrien 89859243Sobrien.if ${TARGET_ARCH} == "alpha" && ${TARGET_ARCH} != ${MACHINE_ARCH} 89959243Sobrien_elf2exe= usr.sbin/elf2exe 90059243Sobrien.endif 90159243Sobrien 90259243Sobrien.if ${TARGET_ARCH} == "i386" && ${TARGET_ARCH} != ${MACHINE_ARCH} && \ 90359243Sobrien defined(RELEASEDIR) 90459243Sobrien_kgzip= usr.sbin/kgzip 90559243Sobrien.endif 90659243Sobrien 90759243Sobriencross-tools: 90859243Sobrien.for _tool in \ 90959243Sobrien gnu/usr.bin/binutils \ 91059415Sobrien gnu/usr.bin/cc \ 91159243Sobrien usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ 91259243Sobrien ${_btxld} \ 91359243Sobrien ${_crunchide} \ 91459243Sobrien ${_elf2exe} \ 91559243Sobrien ${_kgzip} 91659243Sobrien ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 91759243Sobrien cd ${.CURDIR}/${_tool}; \ 91859243Sobrien ${MAKE} DIRPRFX=${_tool}/ obj; \ 91959243Sobrien ${MAKE} DIRPRFX=${_tool}/ depend; \ 92059243Sobrien ${MAKE} DIRPRFX=${_tool}/ all; \ 92159243Sobrien ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install 92259243Sobrien.endfor 92359243Sobrien 92459243Sobrien# 92559243Sobrien# hierarchy - ensure that all the needed directories are present 92659243Sobrien# 92759243Sobrienhierarchy: 92859243Sobrien cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 92959243Sobrien 93059243Sobrien# 93159243Sobrien# libraries - build all libraries, and install them under ${DESTDIR}. 93259243Sobrien# 93359243Sobrien# The list of libraries with dependents (${_prebuild_libs}) and their 93459243Sobrien# interdependencies (__L) are built automatically by the 93559243Sobrien# ${.CURDIR}/tools/make_libdeps.sh script. 93659243Sobrien# 93759415Sobrienlibraries: 93859243Sobrien cd ${.CURDIR}; \ 93959243Sobrien ${MAKE} -f Makefile.inc1 _startup_libs; \ 94059243Sobrien ${MAKE} -f Makefile.inc1 _prebuild_libs; \ 94159243Sobrien ${MAKE} -f Makefile.inc1 _generic_libs; 94259243Sobrien 94359243Sobrien# These dependencies are not automatically generated: 94459243Sobrien# 94559243Sobrien# gnu/lib/csu, gnu/lib/libgcc and lib/csu must be built before all 94659243Sobrien# shared libraries for ELF. 94759243Sobrien# 94859243Sobrien_startup_libs= gnu/lib/csu gnu/lib/libgcc 94959243Sobrien.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) 95059243Sobrien_startup_libs+= lib/csu/${MACHINE_ARCH}-elf 95159243Sobrien.else 95259243Sobrien_startup_libs+= lib/csu/${MACHINE_ARCH} 95359243Sobrien.endif 95459243Sobrien 955167465Smp_prebuild_libs= 95659243Sobrien 95759243Sobrien_generic_libs= gnu/lib 95859243Sobrien 95959243Sobrien.if !defined(NO_KERBEROS) && !defined(NO_CRYPT) && !defined(NO_OPENSSL) 96059415Sobrien_prebuild_libs+= kerberos5/lib/libasn1 96159243Sobrien_prebuild_libs+= kerberos5/lib/libgssapi 96259243Sobrien_prebuild_libs+= kerberos5/lib/libkrb5 96359243Sobrien_prebuild_libs+= kerberos5/lib/libroken 96459243Sobrien_generic_libs+= kerberos5/lib 96559243Sobrien.endif 96659243Sobrien 96759243Sobrien_prebuild_libs+= lib/libcom_err lib/libcrypt lib/libexpat \ 96859243Sobrien lib/libkvm lib/libmd \ 96959243Sobrien lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ 97059243Sobrien lib/libradius \ 97159243Sobrien lib/libsbuf lib/libtacplus lib/libutil \ 97259243Sobrien lib/libz lib/msun 97359243Sobrien 97459243Sobrienlib/libopie__L lib/libtacplus__L: lib/libmd__L 97559243Sobrien 97659243Sobrien_generic_libs+= lib 97759243Sobrien 97859243Sobrien.if !defined(NO_CRYPT) 97959243Sobrien.if !defined(NO_OPENSSL) 98059243Sobrien_prebuild_libs+= secure/lib/libcrypto secure/lib/libssl 98159243Sobrienlib/libradius__L: secure/lib/libssl__L 98259243Sobriensecure/lib/libssl__L: secure/lib/libcrypto__L 98359243Sobrien.if !defined(NO_OPENSSH) 98459243Sobrien_prebuild_libs+= secure/lib/libssh 98559243Sobriensecure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L 98659243Sobrien.if !defined(NO_KERBEROS) 98759243Sobriensecure/lib/libssh__L: kerberos5/lib/libgssapi__L kerberos5/lib/libkrb5__L \ 98859243Sobrien kerberos5/lib/libasn1__L lib/libcom_err__L lib/libmd__L \ 98959243Sobrien kerberos5/lib/libroken__L 99059243Sobrien.endif 99159243Sobrien.endif 99259243Sobrien.endif 99359243Sobrien_generic_libs+= secure/lib 99459243Sobrien.endif 99559243Sobrien 99659243Sobrien.if defined(NO_CRYPT) || defined(NO_OPENSSL) 99759243Sobrienlib/libradius__L: lib/libmd__L 99859243Sobrien.endif 99959243Sobrien 100059243Sobrien.if !defined(NO_NIS) 100159415Sobrien_prebuild_libs+= lib/libypclnt 100259243Sobrien.endif 100359243Sobrien 100459243Sobrien_generic_libs+= usr.bin/lex/lib 100559243Sobrien 100659243Sobrien.if ${MACHINE_ARCH} == "i386" 100759243Sobrien_generic_libs+= usr.sbin/pcvt/keycap 100859243Sobrien.endif 100959243Sobrien 101059243Sobrien.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} 101159415Sobrien${_lib}__L: .PHONY 101259243Sobrien.if exists(${.CURDIR}/${_lib}) 101359243Sobrien ${_+_}@${ECHODIR} "===> ${_lib} (depend,all,install)"; \ 101459243Sobrien cd ${.CURDIR}/${_lib}; \ 101559243Sobrien ${MAKE} DIRPRFX=${_lib}/ depend; \ 101659243Sobrien ${MAKE} DIRPRFX=${_lib}/ all; \ 101759243Sobrien ${MAKE} DIRPRFX=${_lib}/ install 101859243Sobrien.endif 101959243Sobrien.endfor 102059243Sobrien 102159243Sobrien# libpam is special: we need to build static PAM modules before 102259243Sobrien# static PAM library, and dynamic PAM library before dynamic PAM 102359243Sobrien# modules. 102459243Sobrienlib/libpam__L: .PHONY 102559243Sobrien ${_+_}@${ECHODIR} "===> lib/libpam (depend,all,install)"; \ 102659243Sobrien cd ${.CURDIR}/lib/libpam; \ 102759243Sobrien ${MAKE} DIRPRFX=lib/libpam/ depend; \ 102859243Sobrien ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ 102959243Sobrien ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install 103059243Sobrien 103159243Sobrien_startup_libs: ${_startup_libs:S/$/__L/} 103259243Sobrien_prebuild_libs: ${_prebuild_libs:S/$/__L/} 103359243Sobrien_generic_libs: ${_generic_libs:S/$/__L/} 103459243Sobrien 103559243Sobrien.for __target in all clean cleandepend cleandir depend includes obj 103659243Sobrien.for entry in ${SUBDIR} 103759243Sobrien${entry}.${__target}__D: .PHONY 103859243Sobrien ${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 103959243Sobrien ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \ 104059243Sobrien edir=${entry}.${MACHINE_ARCH}; \ 104159243Sobrien cd ${.CURDIR}/$${edir}; \ 104259243Sobrien else \ 104359243Sobrien ${ECHODIR} "===> ${DIRPRFX}${entry} (${__target})"; \ 104459243Sobrien edir=${entry}; \ 104559243Sobrien cd ${.CURDIR}/$${edir}; \ 104659243Sobrien fi; \ 104759243Sobrien ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 104859243Sobrien.endfor 104959243Sobrienpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 105059243Sobrien.endfor 105159243Sobrien 1052167465Smp.include <bsd.subdir.mk> 105359243Sobrien 105459243Sobrien# 105559243Sobrien# check for / delete old files section 105659243Sobrien# 105759243Sobrien 105859243Sobrien.include "ObsoleteFiles.inc" 105959243Sobrien 106059243SobrienOLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \ 106159243Sobrienelse you can not start such an application. Consult UPDATING for more \ 106259243Sobrieninformation regarding how to cope with the removal/revision bump of a \ 106359243Sobrienspecific library." 1064167465Smp 1065167465Smp.if !defined(BATCH_DELETE_OLD_FILES) 106659243SobrienRM_I=-i 106759243Sobrien.endif 106859243Sobrien 106959243Sobriendelete-old-files: 107059243Sobrien.if defined(${TARGET_ARCH}) 107159243Sobrien.error "You have to run this in a native environment!" 107259243Sobrien.endif 107359243Sobrien @echo ">>> Removing old files (only deletes safe to delete libs)" 107459243Sobrien.for file in ${OLD_FILES} 107559243Sobrien# Ask for every old file if the user really wants to remove it. 107659243Sobrien# It's anoying, but beter safe than sorry. 107759243Sobrien @[ ! -f "${DESTDIR}/${file}" ] || (rm ${RM_I} "${DESTDIR}/${file}" \ 107859415Sobrien || ([ -f "${DESTDIR}/${file}" ] \ 107959243Sobrien && echo "Removing schg flag on ${DESTDIR}/${file}" \ 108059243Sobrien && chflags noschg "${DESTDIR}/${file}" \ 108159243Sobrien && rm ${RM_I} "${DESTDIR}/${file}")) 108259243Sobrien.endfor 108359415Sobrien @echo ">>> Old files removed" 108459243Sobrien 108559243Sobriencheck-old-files: 108659243Sobrien.if defined(${TARGET_ARCH}) 108759243Sobrien.error "You have to run this in a native environment!" 108859243Sobrien.endif 108959243Sobrien @echo ">>> Checking for old files" 109059243Sobrien.for file in ${OLD_FILES} 109159243Sobrien @[ ! -f "${DESTDIR}/${file}" ] || echo "${DESTDIR}/${file}" 109259243Sobrien.endfor 109359243Sobrien 109459243Sobriendelete-old-libs: 109559243Sobrien.if defined(${TARGET_ARCH}) 109659415Sobrien.error "You have to run this in a native environment!" 109759243Sobrien.endif 109859243Sobrien @echo ">>> Removing old libraries" 109959243Sobrien @echo "${OLD_LIBS_MESSAGE}" | fmt 110059243Sobrien.for file in ${OLD_LIBS} 110159243Sobrien @[ ! -f "${DESTDIR}/${file}" ] || (rm ${RM_I} "${DESTDIR}/${file}" \ 110259243Sobrien || ([ -f "${DESTDIR}/${file}" ] \ 110359243Sobrien && echo "Removing schg flag on ${DESTDIR}/${file}" \ 110459415Sobrien && chflags noschg "${DESTDIR}/${file}" \ 110559243Sobrien && rm ${RM_I} "${DESTDIR}/${file}")) 110659243Sobrien.endfor 110759243Sobrien @echo ">>> Old libraries removed" 110859243Sobrien 110959243Sobriencheck-old-libs: 111059243Sobrien.if defined(${TARGET_ARCH}) 111159243Sobrien.error "You have to run this in a native environment!" 111259243Sobrien.endif 111359243Sobrien @echo ">>> Checking for old libraries" 111459243Sobrien.for file in ${OLD_LIBS} 111559243Sobrien @[ ! -f "${DESTDIR}/${file}" ] || echo "${DESTDIR}/${file}" 111659243Sobrien.endfor 111759243Sobrien 111859243Sobriendelete-old-dirs: 111959243Sobrien.if defined(${TARGET_ARCH}) 112059243Sobrien.error "You have to run this in a native environment!" 112159243Sobrien.endif 112259243Sobrien @echo ">>> Removing old directories" 112359243Sobrien.for dir in ${OLD_DIRS} 112459243Sobrien# Don't fail if an old directory isn't empty. 112559243Sobrien @[ ! -d "${DESTDIR}/${dir}" ] || (rmdir -v "${DESTDIR}/${dir}" || true) 112659243Sobrien.endfor 112759243Sobrien @echo ">>> Old directories removed" 112859243Sobrien 112959243Sobriencheck-old-dirs: 113059243Sobrien.if defined(${TARGET_ARCH}) 113159243Sobrien.error "You have to run this in a native environment!" 113259243Sobrien.endif 113359243Sobrien @echo ">>> Checking for old directories" 113459243Sobrien.for dir in ${OLD_DIRS} 113559243Sobrien @[ ! -d "${DESTDIR}/${dir}" ] || echo "${DESTDIR}/${dir}" 113659243Sobrien.endfor 113759415Sobrien 113859243Sobriendelete-old: delete-old-files delete-old-dirs 113959415Sobrien @echo "To remove old libraries run '${MAKE} delete-old-libs'." 114059243Sobrien 114159243Sobriencheck-old: check-old-files check-old-libs check-old-dirs 114259243Sobrien @echo "To remove old files and directories run '${MAKE} delete-old'." 114359243Sobrien @echo "To remove old libraries run '${MAKE} delete-old-libs'." 114459243Sobrien 114559243Sobrien