Makefile.inc1 revision 133942
155714Skris# 255714Skris# $FreeBSD: head/Makefile.inc1 133942 2004-08-18 06:49:56Z ru $ 355714Skris# 455714Skris# Make command line options: 555714Skris# -DNO_DYNAMICROOT do not link /bin and /sbin dynamically 655714Skris# -DNO_KERBEROS Do not build Heimdal (Kerberos 5) 755714Skris# -DNO_RESCUE do not build rescue binaries 8280297Sjkim# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 955714Skris# -DNOCLEAN do not clean at all 1055714Skris# -DNOCRYPT will prevent building of crypt versions 1155714Skris# -DNOMAN do not build the manual pages 1255714Skris# -DNOPROFILE do not build profiled libraries 1355714Skris# -DNOGAMES do not go into games subdir 1455714Skris# -DNOSHARE do not go into share subdir 15280297Sjkim# -DNOINFO do not make or install info files 1655714Skris# -DNOLIBC_R do not build libc_r. 1755714Skris# -DNO_FORTRAN do not build g77 and related libraries. 1855714Skris# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel 1955714Skris# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel 2055714Skris# -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel 2155714Skris# -DNO_PORTSUPDATE do not update ports in ${MAKE} update 22280297Sjkim# -DNO_DOCUPDATE do not update doc in ${MAKE} update 2355714Skris# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 2455714Skris# TARGET_ARCH="arch" to crossbuild world to a different arch 2555714Skris 2655714Skris# 2755714Skris# The intended user-driven targets are: 2855714Skris# buildworld - rebuild *everything*, including glue to help do upgrades 2955714Skris# installworld- install everything built by "buildworld" 3055714Skris# update - convenient way to update your source tree (eg: sup/cvs) 3155714Skris# 3255714Skris# Standard targets (not defined here) are documented in the makefiles in 3355714Skris# /usr/share/mk. These include: 3455714Skris# obj depend all install clean cleandepend cleanobj 3555714Skris 3655714Skris# We must do share/info early so that installation of info `dir' 37280297Sjkim# entries works correctly. Do it first since it is less likely to 3855714Skris# grow dependencies on include and lib than vice versa. 3955714Skris# 40280297Sjkim# We must do lib and libexec before bin, because if installworld 4155714Skris# installs a new /bin/sh, the 'make' command will *immediately* 4255714Skris# use that new version. And the new (dynamically-linked) /bin/sh 4355714Skris# will expect to find appropriate libraries in /lib and /libexec. 4455714Skris# 4555714Skris# We must do etc last for install/distribute to work. 4655714Skris# 4755714SkrisSUBDIR= share/info include lib libexec bin 4855714Skris.if !defined(NOGAMES) 4955714SkrisSUBDIR+=games 5055714Skris.endif 5155714SkrisSUBDIR+=gnu 52280297Sjkim.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) 5355714SkrisSUBDIR+=kerberos5 5455714Skris.endif 5555714Skris.if !defined(NO_RESCUE) 5655714SkrisSUBDIR+=rescue 5755714Skris.endif 58109998SmarkmSUBDIR+=sbin 59109998Smarkm.if !defined(NOCRYPT) 60109998SmarkmSUBDIR+=secure 61109998Smarkm.endif 62109998Smarkm.if !defined(NOSHARE) 63109998SmarkmSUBDIR+=share 64109998Smarkm.endif 65109998SmarkmSUBDIR+=sys usr.bin usr.sbin etc 66280297Sjkim 67109998Smarkm# These are last, since it is nice to at least get the base system 68109998Smarkm# rebuilt before you do them. 69109998Smarkm.for _DIR in ${LOCAL_DIRS} 70109998Smarkm.if exists(${.CURDIR}/${_DIR}/Makefile) 71109998SmarkmSUBDIR+= ${_DIR} 72109998Smarkm.endif 73109998Smarkm.endfor 74109998Smarkm 75109998Smarkm.if defined(SUBDIR_OVERRIDE) 76109998SmarkmSUBDIR= ${SUBDIR_OVERRIDE} 77109998Smarkm.endif 78109998Smarkm 79109998Smarkm.if defined(NOCLEANDIR) 80109998SmarkmCLEANDIR= clean cleandepend 81109998Smarkm.else 82109998SmarkmCLEANDIR= cleandir 83109998Smarkm.endif 84109998Smarkm 85109998SmarkmCVS?= cvs 86109998SmarkmSUP?= /usr/local/bin/cvsup 87109998SmarkmSUPFLAGS?= -g -L 2 -P - 88109998Smarkm.if defined(SUPHOST) 89109998SmarkmSUPFLAGS+= -h ${SUPHOST} 90109998Smarkm.endif 91109998Smarkm 92109998SmarkmMAKEOBJDIRPREFIX?= /usr/obj 93109998Smarkm.if !defined(OSRELDATE) 94109998Smarkm.if exists(/usr/include/osreldate.h) 95109998SmarkmOSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ 96109998Smarkm /usr/include/osreldate.h 97109998Smarkm.else 98109998SmarkmOSRELDATE= 0 99109998Smarkm.endif 100109998Smarkm.endif 101109998SmarkmTARGET_ARCH?= ${MACHINE_ARCH} 102109998Smarkm.if ${TARGET_ARCH} == ${MACHINE_ARCH} 103109998SmarkmTARGET?= ${MACHINE} 104109998SmarkmTARGET_CPUTYPE?=${CPUTYPE} 105109998Smarkm.else 106109998SmarkmTARGET?= ${TARGET_ARCH} 107109998SmarkmTARGET_CPUTYPE?= 108109998Smarkm.endif 109109998Smarkm.if !empty(TARGET_CPUTYPE) 110109998Smarkm_TARGET_CPUTYPE=${TARGET_CPUTYPE} 11155714Skris.else 11255714Skris_TARGET_CPUTYPE=dummy 11355714Skris.endif 11455714Skris_CPUTYPE!= MAKEFLAGS= ${MAKE} -f /dev/null -m ${.CURDIR}/share/mk \ 11555714Skris CPUTYPE=${_TARGET_CPUTYPE} -V CPUTYPE 11659191Skris.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} 117109998Smarkm.error CPUTYPE global should be set with ?=. 118280297Sjkim.endif 119280297Sjkim.if make(buildworld) 120280297SjkimBUILD_ARCH!= sysctl -n hw.machine_arch 12155714Skris.if ${MACHINE_ARCH} != ${BUILD_ARCH} 122280297Sjkim.error To cross-build, set TARGET_ARCH. 123280297Sjkim.endif 12455714Skris.endif 125280297Sjkim.if ${MACHINE} == ${TARGET} 126280297SjkimOBJTREE= ${MAKEOBJDIRPREFIX} 127280297Sjkim.else 128280297SjkimOBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET} 129280297Sjkim.endif 13055714SkrisWORLDTMP= ${OBJTREE}${.CURDIR}/${MACHINE_ARCH} 131280297Sjkim# /usr/games added for fortune which depend on strfile 132280297SjkimBPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games 133280297SjkimXPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games 134280297SjkimSTRICTTMPPATH= ${BPATH}:${XPATH} 135280297SjkimTMPPATH= ${STRICTTMPPATH}:${PATH} 136280297Sjkim 13755714SkrisINSTALLTMP!= /usr/bin/mktemp -d -u -t install 138280297Sjkim 139280297Sjkim# 140280297Sjkim# Building a world goes through the following stages 141280297Sjkim# 142280297Sjkim# 1. legacy stage [BMAKE] 143280297Sjkim# This stage is responsible for creating compatibility 144280297Sjkim# shims that are needed by the bootstrap-tools, 145280297Sjkim# build-tools and cross-tools stages. 14655714Skris# 1. bootstrap-tools stage [BMAKE] 147280297Sjkim# This stage is responsible for creating programs that 148280297Sjkim# are needed for backward compatibility reasons. They 149280297Sjkim# are not built as cross-tools. 150280297Sjkim# 2. build-tools stage [TMAKE] 151280297Sjkim# This stage is responsible for creating the object 152280297Sjkim# tree and building any tools that are needed during 153280297Sjkim# the build process. 154280297Sjkim# 3. cross-tools stage [XMAKE] 15555714Skris# This stage is responsible for creating any tools that 15655714Skris# are needed for cross-builds. A cross-compiler is one 157280297Sjkim# of them. 158280297Sjkim# 4. world stage [WMAKE] 159280297Sjkim# This stage actually builds the world. 16055714Skris# 5. install stage (optional) [IMAKE] 161280297Sjkim# This stage installs a previously built world. 162280297Sjkim# 16355714Skris 164280297SjkimBOOTSTRAPPING?= 0 165280297Sjkim 166280297Sjkim# Common environment for world related stages 16755714SkrisCROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ 168280297Sjkim MACHINE_ARCH=${TARGET_ARCH} \ 169280297Sjkim MACHINE=${TARGET} \ 170280297Sjkim CPUTYPE=${TARGET_CPUTYPE} \ 171280297Sjkim GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ 172280297Sjkim GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ 173280297Sjkim GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac 174280297Sjkim 175280297Sjkim# bootstrap-tools stage 176280297SjkimBMAKEENV= DESTDIR= \ 177280297Sjkim INSTALL="sh ${.CURDIR}/tools/install.sh" \ 178280297Sjkim PATH=${BPATH}:${PATH} \ 179280297Sjkim WORLDTMP=${WORLDTMP} \ 180109998Smarkm MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" 181280297SjkimBMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ 182280297Sjkim ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 183280297Sjkim BOOTSTRAPPING=${OSRELDATE} \ 184280297Sjkim -DNOHTML -DNOINFO -DNOLINT -DNOMAN -DNOPIC -DNOPROFILE \ 185280297Sjkim -DNOSHARED -DNO_CPU_CFLAGS -DNO_WARNS 186280297Sjkim 187280297Sjkim# build-tools stage 188280297SjkimTMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ 189280297Sjkim ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 19055714Skris BOOTSTRAPPING=${OSRELDATE} -DNOLINT -DNO_CPU_CFLAGS -DNO_WARNS 191280297Sjkim 192280297Sjkim# cross-tools stage 193280297SjkimXMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} -DNO_FORTRAN -DNO_GDB 194280297Sjkim 195280297Sjkim# world stage 196280297SjkimWMAKEENV= ${CROSSENV} \ 197280297Sjkim DESTDIR=${WORLDTMP} \ 198280297Sjkim _SHLIBDIRPREFIX=${WORLDTMP} \ 199280297Sjkim INSTALL="sh ${.CURDIR}/tools/install.sh" \ 200109998Smarkm PATH=${TMPPATH} 201280297SjkimWMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 202280297Sjkim 203280297Sjkim# install stage 204280297Sjkim.if empty(.MAKEFLAGS:M-n) 205280297SjkimIMAKEENV= ${CROSSENV} \ 206280297Sjkim PATH=${STRICTTMPPATH}:${INSTALLTMP} 207280297Sjkim.else 208280297SjkimIMAKEENV= ${CROSSENV} \ 209280297Sjkim PATH=${TMPPATH}:${INSTALLTMP} 210280297Sjkim.endif 211280297SjkimIMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 212280297Sjkim 213280297Sjkim# kernel stage 214280297SjkimKMAKEENV= ${WMAKEENV} 215280297Sjkim 216280297Sjkim# 217280297Sjkim# buildworld 218280297Sjkim# 219280297Sjkim# Attempt to rebuild the entire system, with reasonable chance of 220280297Sjkim# success, regardless of how old your existing system is. 22155714Skris# 222194206Ssimon_worldtmp: 223280297Sjkim.if ${.CURDIR:C/[^,]//g} != "" 224280297Sjkim# The m4 build of sendmail files doesn't like it if ',' is used 225246772Sjkim# anywhere in the path of it's files. 226109998Smarkm @echo 227280297Sjkim @echo "*** Error: path to source tree contains a comma ','" 228280297Sjkim @echo 229280297Sjkim false 230280297Sjkim.endif 231280297Sjkim @echo 23255714Skris @echo "--------------------------------------------------------------" 233280297Sjkim @echo ">>> Rebuilding the temporary build tree" 234280297Sjkim @echo "--------------------------------------------------------------" 235280297Sjkim.if !defined(NOCLEAN) 236280297Sjkim rm -rf ${WORLDTMP} 237194206Ssimon.else 238280297Sjkim rm -rf ${WORLDTMP}/legacy/usr/include 239280297Sjkim # XXX - These two can depend on any header file. 24055714Skris rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c 241280297Sjkim rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c 242280297Sjkim.endif 243280297Sjkim.for _dir in \ 244280297Sjkim usr/bin usr/games usr/include/c++/3.3 usr/include/sys usr/lib \ 245280297Sjkim usr/libexec usr/sbin usr/share/dict \ 246280297Sjkim usr/share/groff_font/devX100 \ 247280297Sjkim usr/share/groff_font/devX100-12 \ 248280297Sjkim usr/share/groff_font/devX75 \ 249280297Sjkim usr/share/groff_font/devX75-12 \ 250280297Sjkim usr/share/groff_font/devascii \ 25159191Skris usr/share/groff_font/devcp1047 \ 252280297Sjkim usr/share/groff_font/devdvi \ 253280297Sjkim usr/share/groff_font/devhtml \ 254280297Sjkim usr/share/groff_font/devkoi8-r \ 255280297Sjkim usr/share/groff_font/devlatin1 \ 256280297Sjkim usr/share/groff_font/devlbp \ 257280297Sjkim usr/share/groff_font/devlj4 \ 25855714Skris usr/share/groff_font/devps \ 259280297Sjkim usr/share/groff_font/devutf8 \ 260280297Sjkim usr/share/tmac/mdoc usr/share/tmac/mm 261280297Sjkim mkdir -p ${WORLDTMP}/legacy/${_dir} 262280297Sjkim.endfor 263280297Sjkim.for _dir in \ 264280297Sjkim lib usr/bin usr/include usr/lib/compat/aout usr/libdata/ldscripts \ 265280297Sjkim usr/libexec usr/sbin usr/share/misc \ 266280297Sjkim usr/share/snmp/defs usr/share/snmp/mibs 267280297Sjkim mkdir -p ${WORLDTMP}/${_dir} 268280297Sjkim.endfor 269280297Sjkim mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 270280297Sjkim -p ${WORLDTMP}/usr/include >/dev/null 271280297Sjkim ln -sf ${.CURDIR}/sys ${WORLDTMP} 272280297Sjkim_legacy: 273280297Sjkim @echo 274280297Sjkim @echo "--------------------------------------------------------------" 275280297Sjkim @echo ">>> stage 1.1: legacy release compatibility shims" 276280297Sjkim @echo "--------------------------------------------------------------" 277280297Sjkim ${_+_}cd ${.CURDIR}; ${BMAKE} legacy 27855714Skris_bootstrap-tools: 279280297Sjkim @echo 280280297Sjkim @echo "--------------------------------------------------------------" 281280297Sjkim @echo ">>> stage 1.2: bootstrap tools" 282280297Sjkim @echo "--------------------------------------------------------------" 283280297Sjkim ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools 284280297Sjkim_cleanobj: 285280297Sjkim.if !defined(NOCLEAN) 286280297Sjkim @echo 28755714Skris @echo "--------------------------------------------------------------" 288280297Sjkim @echo ">>> stage 2.1: cleaning up the object tree" 289280297Sjkim @echo "--------------------------------------------------------------" 290280297Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/} 291280297Sjkim.endif 292280297Sjkim_obj: 293280297Sjkim @echo 294280297Sjkim @echo "--------------------------------------------------------------" 295109998Smarkm @echo ">>> stage 2.2: rebuilding the object tree" 296280297Sjkim @echo "--------------------------------------------------------------" 297280297Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj 298280297Sjkim_build-tools: 299280297Sjkim @echo 300280297Sjkim @echo "--------------------------------------------------------------" 301280297Sjkim @echo ">>> stage 2.3: build tools" 302280297Sjkim @echo "--------------------------------------------------------------" 303280297Sjkim ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools 304109998Smarkm_cross-tools: 305280297Sjkim @echo 306280297Sjkim @echo "--------------------------------------------------------------" 307280297Sjkim @echo ">>> stage 3: cross tools" 308280297Sjkim @echo "--------------------------------------------------------------" 309280297Sjkim ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools 310280297Sjkim_includes: 311280297Sjkim @echo 312280297Sjkim @echo "--------------------------------------------------------------" 313280297Sjkim @echo ">>> stage 4.1: building includes" 314280297Sjkim @echo "--------------------------------------------------------------" 315280297Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes 316280297Sjkim_libraries: 317280297Sjkim @echo 318280297Sjkim @echo "--------------------------------------------------------------" 319109998Smarkm @echo ">>> stage 4.2: building libraries" 320280297Sjkim @echo "--------------------------------------------------------------" 321280297Sjkim ${_+_}cd ${.CURDIR}; \ 322280297Sjkim ${WMAKE} -DNOFSCHG -DNOHTML -DNOINFO -DNOLINT -DNOMAN -DNOPROFILE \ 323280297Sjkim libraries 324280297Sjkim_depend: 325280297Sjkim @echo 326109998Smarkm @echo "--------------------------------------------------------------" 327280297Sjkim @echo ">>> stage 4.3: make dependencies" 328280297Sjkim @echo "--------------------------------------------------------------" 329280297Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend 330280297Sjkimeverything: 331280297Sjkim @echo 332280297Sjkim @echo "--------------------------------------------------------------" 333280297Sjkim @echo ">>> stage 4.4: building everything" 334280297Sjkim @echo "--------------------------------------------------------------" 335280297Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-all 336280297Sjkim 337280297Sjkim 338280297SjkimWMAKE_TGTS= 339109998Smarkm.if !defined(SUBDIR_OVERRIDE) 340280297SjkimWMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools 341280297Sjkim.endif 342280297SjkimWMAKE_TGTS+= _cleanobj _obj _build-tools 343280297Sjkim.if !defined(SUBDIR_OVERRIDE) 344280297SjkimWMAKE_TGTS+= _cross-tools 345280297Sjkim.endif 346280297SjkimWMAKE_TGTS+= _includes _libraries _depend everything 347280297Sjkim 348280297Sjkimbuildworld: ${WMAKE_TGTS} 349280297Sjkim.ORDER: ${WMAKE_TGTS} 350280297Sjkim 351280297SjkimTOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything} 352280297Sjkimtoolchain: ${TOOLCHAIN_TGTS} 353280297Sjkimkernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} 354280297Sjkim 355280297Sjkim# 356280297Sjkim# Use this to add checks to installworld/installkernel targets. 357280297Sjkim# 358280297SjkimSPECIAL_INSTALLCHECKS= 359280297Sjkim 360280297Sjkim# 361280297Sjkim# The following install-time check will see if the installation will 362280297Sjkim# change the type used for time_t, and if it will, the target makes 363280297Sjkim# sure that the user is expecting to make that change. 364280297Sjkim# 365280297Sjkim.if ${TARGET_ARCH} == "sparc64" 366280297SjkimSPECIAL_INSTALLCHECKS+=sparc64_installcheck 367280297Sjkim 368280297SjkimCUR_TIMET!= grep __time_t /usr/include/machine/_types.h | awk '{print $$2}' 369280297SjkimSRC_TIMET!= grep __time_t ${.CURDIR}/sys/sparc64/include/_types.h | \ 370280297Sjkim awk '{print $$2}' 371280297SjkimNEWSPARC_TIMETYPE?=${CUR_TIMET} 372280297Sjkim 373280297Sjkimsparc64_installcheck: 374280297Sjkim.if ${CUR_TIMET} != ${SRC_TIMET} 375280297Sjkim @echo 37655714Skris.if ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} 377280297Sjkim @echo "*** ERROR: This target would change the type used for time_t!" 378280297Sjkim.else 379194206Ssimon @echo "* Note: This installation changes the type used for time_t." 380280297Sjkim.endif 381280297Sjkim @echo "* " 382280297Sjkim @echo "* This host has time_t defined as ${CUR_TIMET}," 383280297Sjkim @echo "* and this installation would change that to type ${SRC_TIMET}." 384280297Sjkim.if ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} 385194206Ssimon @echo "* " 386280297Sjkim @echo "* If that is *NOT* what you wanted, then you need to change the" 387280297Sjkim @echo "* typedef of __time_t in ${.CURDIR}/sys/sparc64/include/_types.h" 388280297Sjkim @echo "* from '${SRC_TIMET}' to '${CUR_TIMET}'. After that you *MUST*" 389280297Sjkim @echo "* do a complete cleanworld, buildworld, buildkernel before you" 390280297Sjkim @echo "* retry the 'make' command. Also read /usr/src/UPDATING.64BTT." 391280297Sjkim @echo "* " 392280297Sjkim @echo "* If that *is* what you want, then enter the commands:" 393280297Sjkim @echo " NEWSPARC_TIMETYPE=${SRC_TIMET}" 394280297Sjkim @echo " export NEWSPARC_TIMETYPE" 395280297Sjkim @echo "* and repeat your 'make' command." 396280297Sjkim @echo 397280297Sjkim false 398280297Sjkim.endif 399280297Sjkim @echo 400280297Sjkim.elif ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} 401280297Sjkim @echo 402280297Sjkim @echo "*** ERROR: NEWSPARC_TIMETYPE is set to '${NEWSPARC_TIMETYPE}'" 403280297Sjkim @echo "*** but ${.CURDIR}/sys/sparc64/include/_types.h" 404280297Sjkim @echo "*** has __time_t defined as '${SRC_TIMET}'." 405280297Sjkim false 406280297Sjkim.else 407280297Sjkim @# in sparc64_installcheck, all TIMETYPEs == '${CUR_TIMET}' 408280297Sjkim.endif 409280297Sjkim.endif 410280297Sjkim 411280297Sjkim# 412280297Sjkim# installcheck 413280297Sjkim# 414280297Sjkim# Checks to be sure system is ready for installworld 415280297Sjkim# 416280297SjkimCHECK_UIDS= 417280297SjkimCHECK_GIDS= 418280297Sjkim.if !defined(NO_SENDMAIL) 419280297SjkimCHECK_UIDS+= smmsp 420280297SjkimCHECK_GIDS+= smmsp 421280297Sjkim.endif 422280297Sjkim.if !defined(NO_PF) 423280297SjkimCHECK_UIDS+= proxy 424280297SjkimCHECK_GIDS+= proxy authpf 425280297Sjkim.endif 426280297Sjkiminstallcheck: ${SPECIAL_INSTALLCHECKS} 427280297Sjkim.for uid in ${CHECK_UIDS} 428280297Sjkim @if ! `id -u ${uid} >/dev/null 2>&1`; then \ 429280297Sjkim echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \ 430280297Sjkim false; \ 431280297Sjkim fi 432280297Sjkim.endfor 433280297Sjkim.for gid in ${CHECK_GIDS} 434280297Sjkim @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \ 435280297Sjkim echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \ 436280297Sjkim false; \ 437280297Sjkim fi 438280297Sjkim.endfor 439280297Sjkim 440280297Sjkim# 441280297Sjkim# distributeworld 442280297Sjkim# 443280297Sjkim# Distributes everything compiled by a `buildworld'. 444280297Sjkim# 445280297Sjkim# installworld 446280297Sjkim# 447280297Sjkim# Installs everything compiled by a 'buildworld'. 448280297Sjkim# 449280297Sjkimdistributeworld installworld: installcheck 450280297Sjkim mkdir -p ${INSTALLTMP} 451280297Sjkim for prog in [ awk cap_mkdb cat chflags chmod chown \ 452280297Sjkim date echo egrep find grep \ 453280297Sjkim ln make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ 454280297Sjkim test true uname wc zic; do \ 455280297Sjkim cp `which $$prog` ${INSTALLTMP}; \ 456280297Sjkim done 457280297Sjkim ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//} 458280297Sjkim rm -rf ${INSTALLTMP} 459280297Sjkim 460280297Sjkim# 461280297Sjkim# reinstall 462280297Sjkim# 463280297Sjkim# If you have a build server, you can NFS mount the source and obj directories 464280297Sjkim# and do a 'make reinstall' on the *client* to install new binaries from the 465280297Sjkim# most recent server build. 466280297Sjkim# 467280297Sjkimreinstall: ${SPECIAL_INSTALLCHECKS} 468280297Sjkim @echo "--------------------------------------------------------------" 469280297Sjkim @echo ">>> Making hierarchy" 470280297Sjkim @echo "--------------------------------------------------------------" 471280297Sjkim ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 472280297Sjkim @echo 473280297Sjkim @echo "--------------------------------------------------------------" 474280297Sjkim @echo ">>> Installing everything" 475280297Sjkim @echo "--------------------------------------------------------------" 476280297Sjkim ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 477280297Sjkim 478280297Sjkimredistribute: 479280297Sjkim @echo "--------------------------------------------------------------" 480280297Sjkim @echo ">>> Distributing everything" 481280297Sjkim @echo "--------------------------------------------------------------" 482280297Sjkim ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute 483280297Sjkim 484280297Sjkim# 485280297Sjkim# buildkernel and installkernel 486280297Sjkim# 487280297Sjkim# Which kernels to build and/or install is specified by setting 488280297Sjkim# KERNCONF. If not defined a GENERIC kernel is built/installed. 489280297Sjkim# Only the existing (depending TARGET) config files are used 490280297Sjkim# for building kernels and only the first of these is designated 491280297Sjkim# as the one being installed. 492280297Sjkim# 493280297Sjkim# Note that we have to use TARGET instead of TARGET_ARCH when 494280297Sjkim# we're in kernel-land. Since only TARGET_ARCH is (expected) to 495280297Sjkim# be set to cross-build, we have to make sure TARGET is set 496280297Sjkim# properly. 497280297Sjkim 498280297Sjkim.if !defined(KERNCONF) && defined(KERNEL) 499280297SjkimKERNCONF= ${KERNEL} 500280297SjkimKERNWARN= yes 501280297Sjkim.else 502280297SjkimKERNCONF?= GENERIC 503280297Sjkim.endif 504280297SjkimINSTKERNNAME?= kernel 505280297Sjkim 506280297SjkimKERNSRCDIR?= ${.CURDIR}/sys 507280297SjkimKRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf 508280297SjkimKRNLOBJDIR= ${OBJTREE}${KERNSRCDIR} 509280297SjkimKERNCONFDIR?= ${KRNLCONFDIR} 510280297Sjkim 511280297SjkimBUILDKERNELS= 512280297SjkimINSTALLKERNEL= 513280297Sjkim.for _kernel in ${KERNCONF} 514280297Sjkim.if exists(${KERNCONFDIR}/${_kernel}) 515280297SjkimBUILDKERNELS+= ${_kernel} 516280297Sjkim.if empty(INSTALLKERNEL) 517280297SjkimINSTALLKERNEL= ${_kernel} 518280297Sjkim.endif 519280297Sjkim.endif 520280297Sjkim.endfor 521280297Sjkim 522280297Sjkim# 523280297Sjkim# buildkernel 524280297Sjkim# 525280297Sjkim# Builds all kernels defined by BUILDKERNELS. 526280297Sjkim# 527280297Sjkimbuildkernel: 528280297Sjkim.if empty(BUILDKERNELS) 529280297Sjkim @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; 530280297Sjkim false 531280297Sjkim.endif 532280297Sjkim.if defined(KERNWARN) 533280297Sjkim @echo "--------------------------------------------------------------" 534280297Sjkim @echo ">>> WARNING: KERNEL= setting should be changed to KERNCONF=" 535280297Sjkim @echo "--------------------------------------------------------------" 536280297Sjkim @sleep 3 537280297Sjkim.endif 538280297Sjkim @echo 539280297Sjkim.for _kernel in ${BUILDKERNELS} 540194206Ssimon @echo "--------------------------------------------------------------" 541194206Ssimon @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" 542280297Sjkim @echo "--------------------------------------------------------------" 543280297Sjkim @echo "===> ${_kernel}" 544280297Sjkim mkdir -p ${KRNLOBJDIR} 545280297Sjkim.if !defined(NO_KERNELCONFIG) 546280297Sjkim @echo 547280297Sjkim @echo "--------------------------------------------------------------" 548280297Sjkim @echo ">>> stage 1: configuring the kernel" 549280297Sjkim @echo "--------------------------------------------------------------" 550194206Ssimon cd ${KRNLCONFDIR}; \ 551280297Sjkim PATH=${TMPPATH} \ 552280297Sjkim config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ 553194206Ssimon ${KERNCONFDIR}/${_kernel} 554280297Sjkim.endif 555280297Sjkim.if !defined(NOCLEAN) && !defined(NO_KERNELCLEAN) 556280297Sjkim @echo 557280297Sjkim @echo "--------------------------------------------------------------" 558280297Sjkim @echo ">>> stage 2.1: cleaning up the object tree" 559280297Sjkim @echo "--------------------------------------------------------------" 560280297Sjkim cd ${KRNLOBJDIR}/${_kernel}; \ 561280297Sjkim ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} ${CLEANDIR} 562280297Sjkim.endif 563280297Sjkim @echo 564194206Ssimon @echo "--------------------------------------------------------------" 565280297Sjkim @echo ">>> stage 2.2: rebuilding the object tree" 566280297Sjkim @echo "--------------------------------------------------------------" 567280297Sjkim cd ${KRNLOBJDIR}/${_kernel}; \ 568280297Sjkim ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} obj 569280297Sjkim @echo 570280297Sjkim @echo "--------------------------------------------------------------" 571194206Ssimon @echo ">>> stage 2.3: build tools" 572280297Sjkim @echo "--------------------------------------------------------------" 573280297Sjkim cd ${KRNLOBJDIR}/${_kernel}; \ 574280297Sjkim MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ 575280297Sjkim ${MAKE} -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile 576280297Sjkim# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. 577280297Sjkim.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) 578280297Sjkim.for target in obj depend all 579194206Ssimon cd ${.CURDIR}/sys/modules/aic7xxx/aicasm; \ 580280297Sjkim MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ 581280297Sjkim ${MAKE} -DNO_CPU_CFLAGS ${target} 582280297Sjkim.endfor 583280297Sjkim.endif 584280297Sjkim.if !defined(NO_KERNELDEPEND) 585280297Sjkim @echo 586291719Sjkim @echo "--------------------------------------------------------------" 587280297Sjkim @echo ">>> stage 3.1: making dependencies" 588280297Sjkim @echo "--------------------------------------------------------------" 589280297Sjkim cd ${KRNLOBJDIR}/${_kernel}; \ 590280297Sjkim ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend -DNO_MODULES_OBJ 591280297Sjkim.endif 592280297Sjkim @echo 593280297Sjkim @echo "--------------------------------------------------------------" 594280297Sjkim @echo ">>> stage 3.2: building everything" 595280297Sjkim @echo "--------------------------------------------------------------" 596280297Sjkim cd ${KRNLOBJDIR}/${_kernel}; \ 597280297Sjkim ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} all -DNO_MODULES_OBJ 598280297Sjkim @echo "--------------------------------------------------------------" 599194206Ssimon @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`" 600280297Sjkim @echo "--------------------------------------------------------------" 601280297Sjkim.endfor 602194206Ssimon 603280297Sjkim# 604280297Sjkim# installkernel, etc. 605280297Sjkim# 606280297Sjkim# Install the kernel defined by INSTALLKERNEL 607280297Sjkim# 608194206Ssimoninstallkernel installkernel.debug \ 609280297Sjkimreinstallkernel reinstallkernel.debug: ${SPECIAL_INSTALLCHECKS} 610280297Sjkim.if empty(INSTALLKERNEL) 611280297Sjkim @echo "ERROR: No kernel \"${KERNCONF}\" to install." 612280297Sjkim false 613280297Sjkim.endif 614291719Sjkim @echo "--------------------------------------------------------------" 615280297Sjkim @echo ">>> Making hierarchy" 616194206Ssimon @echo "--------------------------------------------------------------" 617280297Sjkim cd ${.CURDIR}; \ 618280297Sjkim ${CROSSENV} PATH=${TMPPATH} ${MAKE} -f Makefile.inc1 hierarchy 619280297Sjkim @echo 620194206Ssimon @echo "--------------------------------------------------------------" 621280297Sjkim @echo ">>> Installing kernel" 622280297Sjkim @echo "--------------------------------------------------------------" 623280297Sjkim cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 624280297Sjkim ${CROSSENV} PATH=${TMPPATH} \ 625280297Sjkim ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} 626280297Sjkim 627280297Sjkim# 628280297Sjkim# update 629280297Sjkim# 630280297Sjkim# Update the source tree, by running sup and/or running cvs to update to the 631280297Sjkim# latest copy. 632280297Sjkim# 633280297Sjkimupdate: 634280297Sjkim.if defined(SUP_UPDATE) 635280297Sjkim @echo "--------------------------------------------------------------" 636280297Sjkim @echo ">>> Running ${SUP}" 637280297Sjkim @echo "--------------------------------------------------------------" 638280297Sjkim.if defined(SUPFILE) 639280297Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE} 640280297Sjkim.endif 641280297Sjkim.if defined(SUPFILE1) 642280297Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE1} 643280297Sjkim.endif 644280297Sjkim.if defined(SUPFILE2) 645280297Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE2} 646280297Sjkim.endif 647280297Sjkim.if defined(PORTSSUPFILE) && !defined(NO_PORTSUPDATE) 648280297Sjkim @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 649280297Sjkim.endif 650280297Sjkim.if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) 651280297Sjkim @${SUP} ${SUPFLAGS} ${DOCSUPFILE} 652280297Sjkim.endif 653280297Sjkim.endif 654280297Sjkim.if defined(CVS_UPDATE) 655280297Sjkim @echo "--------------------------------------------------------------" 656280297Sjkim @echo ">>> Updating ${.CURDIR} from cvs repository" ${CVSROOT} 657280297Sjkim @echo "--------------------------------------------------------------" 658280297Sjkim cd ${.CURDIR}; ${CVS} -R -q update -A -P -d 659280297Sjkim.endif 660280297Sjkim 661280297Sjkim# 662280297Sjkim# ------------------------------------------------------------------------ 663280297Sjkim# 664280297Sjkim# From here onwards are utility targets used by the 'make world' and 665280297Sjkim# related targets. If your 'world' breaks, you may like to try to fix 666280297Sjkim# the problem and manually run the following targets to attempt to 667280297Sjkim# complete the build. Beware, this is *not* guaranteed to work, you 668280297Sjkim# need to have a pretty good grip on the current state of the system 669280297Sjkim# to attempt to manually finish it. If in doubt, 'make world' again. 670280297Sjkim# 671280297Sjkim 672280297Sjkim# 673280297Sjkim# legacy: Build compatibility shims for the next three targets 674280297Sjkim# 675280297Sjkimlegacy: 676280297Sjkim.for _tool in tools/build 677280297Sjkim ${_+_}@${ECHODIR} "===> ${_tool}"; \ 678280297Sjkim cd ${.CURDIR}/${_tool}; \ 679280297Sjkim ${MAKE} DIRPRFX=${_tool}/ obj; \ 680280297Sjkim ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \ 681280297Sjkim ${MAKE} DIRPRFX=${_tool}/ depend; \ 682280297Sjkim ${MAKE} DIRPRFX=${_tool}/ all; \ 683280297Sjkim ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 684280297Sjkim.endfor 685280297Sjkim 686280297Sjkim# 687280297Sjkim# bootstrap-tools: Build tools needed for compatibility 688280297Sjkim# 689280297Sjkim.if !defined(NOGAMES) 690280297Sjkim_strfile= games/fortune/strfile 691280297Sjkim.endif 692280297Sjkim 693280297Sjkim.if !defined(NO_CXX) 694280297Sjkim_gperf= gnu/usr.bin/gperf 695280297Sjkim.if ${BOOTSTRAPPING} < 500113 696280297Sjkim_groff= gnu/usr.bin/groff 697280297Sjkim.else 698280297Sjkim_groff= gnu/usr.bin/groff/tmac 699280297Sjkim.endif 700280297Sjkim.endif 701280297Sjkim 702280297Sjkim.if ${BOOTSTRAPPING} < 502102 703_lex= usr.bin/lex 704.endif 705 706.if ${BOOTSTRAPPING} < 450005 || \ 707 ${BOOTSTRAPPING} >= 500000 && ${BOOTSTRAPPING} < 500034 708_uudecode= usr.bin/uudecode 709.endif 710 711.if ${BOOTSTRAPPING} < 430002 || \ 712 ${BOOTSTRAPPING} >= 500000 && ${BOOTSTRAPPING} < 500019 713_xargs= usr.bin/xargs 714.endif 715 716.if ${BOOTSTRAPPING} < 430002 || \ 717 ${BOOTSTRAPPING} >= 500000 && ${BOOTSTRAPPING} < 500018 718_yacc= usr.bin/yacc 719.endif 720 721.if !defined(NO_RESCUE) && \ 722 ${BOOTSTRAPPING} < 502128 723_crunchgen= usr.sbin/crunch/crunchgen 724.endif 725 726.if ${BOOTSTRAPPING} < 502128 727_gensnmptree= usr.sbin/bsnmpd/gensnmptree 728.endif 729 730.if ${BOOTSTRAPPING} < 500019 731_kbdcontrol= usr.sbin/kbdcontrol 732.endif 733 734bootstrap-tools: 735.for _tool in \ 736 ${_strfile} \ 737 ${_gperf} \ 738 ${_groff} \ 739 gnu/usr.bin/texinfo \ 740 usr.bin/colldef \ 741 ${_lex} \ 742 usr.bin/makewhatis \ 743 usr.bin/rpcgen \ 744 ${_uudecode} \ 745 ${_xargs} \ 746 usr.bin/xinstall \ 747 ${_yacc} \ 748 usr.sbin/config \ 749 ${_crunchgen} \ 750 ${_gensnmptree} \ 751 ${_kbdcontrol} 752 ${_+_}@${ECHODIR} "===> ${_tool}"; \ 753 cd ${.CURDIR}/${_tool}; \ 754 ${MAKE} DIRPRFX=${_tool}/ obj; \ 755 ${MAKE} DIRPRFX=${_tool}/ depend; \ 756 ${MAKE} DIRPRFX=${_tool}/ all; \ 757 ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 758.endfor 759 760# 761# build-tools: Build special purpose build tools 762# 763.if defined(MODULES_WITH_WORLD) && exists(${KERNSRCDIR}/modules) 764_aicasm= sys/modules/aic7xxx/aicasm 765.endif 766 767.if !defined(NOSHARE) 768_share= share/syscons/scrnmaps 769.endif 770 771.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) 772_kerberos5_tools= kerberos5/tools 773.endif 774 775.if !defined(NO_RESCUE) 776_rescue= rescue/rescue 777.endif 778 779build-tools: 780.for _tool in \ 781 bin/csh \ 782 bin/sh \ 783 ${_rescue} \ 784 gnu/usr.bin/cc/cc_tools \ 785 lib/libncurses \ 786 ${_share} \ 787 ${_aicasm} \ 788 usr.bin/awk \ 789 lib/libmagic \ 790 usr.sbin/sysinstall 791 ${_+_}@${ECHODIR} "===> ${_tool}"; \ 792 cd ${.CURDIR}/${_tool}; \ 793 ${MAKE} DIRPRFX=${_tool}/ obj; \ 794 ${MAKE} DIRPRFX=${_tool}/ build-tools 795.endfor 796.for _tool in \ 797 ${_kerberos5_tools} 798 ${_+_}@${ECHODIR} "===> ${_tool}"; \ 799 cd ${.CURDIR}/${_tool}; \ 800 ${MAKE} DIRPRFX=${_tool}/ obj; \ 801 ${MAKE} DIRPRFX=${_tool}/ depend; \ 802 ${MAKE} DIRPRFX=${_tool}/ all 803.endfor 804 805# 806# cross-tools: Build cross-building tools 807# 808.if ${TARGET_ARCH} == "sparc64" && ${TARGET_ARCH} != ${MACHINE_ARCH} && \ 809 ${BOOTSTRAPPING} < 500037 810_elf2aout= usr.bin/elf2aout 811.endif 812 813.if ${TARGET_ARCH} == "i386" && ${TARGET_ARCH} != ${MACHINE_ARCH} 814_btxld= usr.sbin/btxld 815.endif 816 817.if (!defined(NO_RESCUE) || \ 818 defined(RELEASEDIR)) && \ 819 (${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 501101) 820_crunchide= usr.sbin/crunch/crunchide 821.endif 822 823.if ${TARGET_ARCH} == "alpha" && ${TARGET_ARCH} != ${MACHINE_ARCH} 824_elf2exe= usr.sbin/elf2exe 825.endif 826 827.if ${TARGET_ARCH} == "i386" && ${TARGET_ARCH} != ${MACHINE_ARCH} && \ 828 defined(RELEASEDIR) 829_kgzip= usr.sbin/kgzip 830.endif 831 832cross-tools: 833.for _tool in \ 834 gnu/usr.bin/binutils \ 835 gnu/usr.bin/cc \ 836 ${_elf2aout} \ 837 usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ 838 ${_btxld} \ 839 ${_crunchide} \ 840 ${_elf2exe} \ 841 ${_kgzip} 842 ${_+_}@${ECHODIR} "===> ${_tool}"; \ 843 cd ${.CURDIR}/${_tool}; \ 844 ${MAKE} DIRPRFX=${_tool}/ obj; \ 845 ${MAKE} DIRPRFX=${_tool}/ depend; \ 846 ${MAKE} DIRPRFX=${_tool}/ all; \ 847 ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install 848.endfor 849 850# 851# hierarchy - ensure that all the needed directories are present 852# 853hierarchy: 854 cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 855 856# 857# libraries - build all libraries, and install them under ${DESTDIR}. 858# 859# The list of libraries with dependents (${_prebuild_libs}) and their 860# interdependencies (__L) are built automatically by the 861# ${.CURDIR}/tools/make_libdeps.sh script. 862# 863libraries: 864 cd ${.CURDIR}; \ 865 ${MAKE} -f Makefile.inc1 _startup_libs; \ 866 ${MAKE} -f Makefile.inc1 _prebuild_libs; \ 867 ${MAKE} -f Makefile.inc1 _generic_libs; 868 869# These dependencies are not automatically generated: 870# 871# gnu/lib/csu, gnu/lib/libgcc and lib/csu must be built before all 872# shared libraries for ELF. 873# 874_startup_libs= gnu/lib/csu gnu/lib/libgcc 875.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) 876_startup_libs+= lib/csu/${MACHINE_ARCH}-elf 877.else 878_startup_libs+= lib/csu/${MACHINE_ARCH} 879.endif 880 881_prebuild_libs= 882 883_generic_libs= gnu/lib 884 885.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) 886_prebuild_libs+= kerberos5/lib/libasn1 887_prebuild_libs+= kerberos5/lib/libgssapi 888_prebuild_libs+= kerberos5/lib/libkrb5 889_prebuild_libs+= kerberos5/lib/libroken 890_generic_libs+= kerberos5/lib 891.endif 892 893_prebuild_libs+= lib/libcom_err lib/libcrypt lib/libexpat \ 894 lib/libkvm lib/libmd \ 895 lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ 896 lib/libradius \ 897 lib/libsbuf lib/libtacplus lib/libutil lib/libypclnt \ 898 lib/libz lib/msun 899 900lib/libopie__L lib/libtacplus__L: lib/libmd__L 901 902_generic_libs+= lib 903 904.if !defined(NOCRYPT) 905.if !defined(NO_OPENSSL) 906_prebuild_libs+= secure/lib/libcrypto secure/lib/libssl 907lib/libradius__L: secure/lib/libssl__L 908secure/lib/libssl__L: secure/lib/libcrypto__L 909.if !defined(NO_OPENSSH) 910_prebuild_libs+= secure/lib/libssh 911secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L 912.if !defined(NO_KERBEROS) 913secure/lib/libssh__L: kerberos5/lib/libgssapi__L kerberos5/lib/libkrb5__L \ 914 kerberos5/lib/libasn1__L lib/libcom_err__L lib/libmd__L \ 915 kerberos5/lib/libroken__L 916.endif 917.endif 918.endif 919_generic_libs+= secure/lib 920.endif 921 922.if defined(NOCRYPT) || defined(NO_OPENSSL) 923lib/libradius__L: lib/libmd__L 924.endif 925 926_generic_libs+= usr.bin/lex/lib 927 928.if ${MACHINE_ARCH} == "i386" 929_generic_libs+= usr.sbin/pcvt/keycap 930.endif 931 932.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} 933${_lib}__L: .PHONY 934.if exists(${.CURDIR}/${_lib}) 935 ${_+_}@${ECHODIR} "===> ${_lib}"; \ 936 cd ${.CURDIR}/${_lib}; \ 937 ${MAKE} DIRPRFX=${_lib}/ depend; \ 938 ${MAKE} DIRPRFX=${_lib}/ all; \ 939 ${MAKE} DIRPRFX=${_lib}/ install 940.endif 941.endfor 942 943# libpam is special: we need to build static PAM modules before 944# static PAM library, and dynamic PAM library before dynamic PAM 945# modules. 946lib/libpam__L: .PHONY 947 ${_+_}@${ECHODIR} "===> lib/libpam"; \ 948 cd ${.CURDIR}/lib/libpam; \ 949 ${MAKE} DIRPRFX=lib/libpam/ depend; \ 950 ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ 951 ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install 952 953_startup_libs: ${_startup_libs:S/$/__L/} 954_prebuild_libs: ${_prebuild_libs:S/$/__L/} 955_generic_libs: ${_generic_libs:S/$/__L/} 956 957.for __target in all clean cleandepend cleandir depend includes obj 958.for entry in ${SUBDIR} 959${entry}.${__target}__D: .PHONY 960 ${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 961 ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH}"; \ 962 edir=${entry}.${MACHINE_ARCH}; \ 963 cd ${.CURDIR}/$${edir}; \ 964 else \ 965 ${ECHODIR} "===> ${DIRPRFX}${entry}"; \ 966 edir=${entry}; \ 967 cd ${.CURDIR}/$${edir}; \ 968 fi; \ 969 ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 970.endfor 971par-${__target}: ${SUBDIR:S/$/.${__target}__D/} 972.endfor 973 974.include <bsd.subdir.mk> 975