Makefile.inc1 revision 167359
141016Sdfr# 241016Sdfr# $FreeBSD: head/Makefile.inc1 167359 2007-03-09 12:11:58Z rafan $ 341016Sdfr# 441016Sdfr# Make command line options: 541016Sdfr# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 641016Sdfr# -DNO_CLEAN do not clean at all 741016Sdfr# -DNO_SHARE do not go into share subdir 841016Sdfr# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel 941016Sdfr# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel 1041016Sdfr# -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel 1141016Sdfr# -DNO_PORTSUPDATE do not update ports in ${MAKE} update 1241016Sdfr# -DNO_DOCUPDATE do not update doc in ${MAKE} update 1341016Sdfr# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 1441016Sdfr# TARGET="machine" to crossbuild world for a different machine type 1541016Sdfr 1641016Sdfr# 1741016Sdfr# The intended user-driven targets are: 1841016Sdfr# buildworld - rebuild *everything*, including glue to help do upgrades 1941016Sdfr# installworld- install everything built by "buildworld" 2041016Sdfr# doxygen - build API documentation of the kernel 2141016Sdfr# update - convenient way to update your source tree (eg: cvsup/cvs) 2241016Sdfr# 2341016Sdfr# Standard targets (not defined here) are documented in the makefiles in 2441016Sdfr# /usr/share/mk. These include: 2541016Sdfr# obj depend all install clean cleandepend cleanobj 2641016Sdfr 2741016Sdfr.include <bsd.own.mk> 2841016Sdfr 2941016Sdfr# We must do share/info early so that installation of info `dir' 3041016Sdfr# entries works correctly. Do it first since it is less likely to 3141016Sdfr# grow dependencies on include and lib than vice versa. 3241016Sdfr# 3341016Sdfr# We must do lib/ and libexec/ before bin/, because if installworld 3441016Sdfr# installs a new /bin/sh, the 'make' command will *immediately* 3541016Sdfr# use that new version. And the new (dynamically-linked) /bin/sh 3641016Sdfr# will expect to find appropriate libraries in /lib and /libexec. 3741016Sdfr# 3841016SdfrSUBDIR= share/info lib libexec 3941016SdfrSUBDIR+=bin 4041016Sdfr.if ${MK_GAMES} != "no" 4141016SdfrSUBDIR+=games 4241016Sdfr.endif 4341016SdfrSUBDIR+=gnu include 4441016Sdfr.if ${MK_KERBEROS} != "no" 4541016SdfrSUBDIR+=kerberos5 4641016Sdfr.endif 4741016Sdfr.if ${MK_RESCUE} != "no" 4841016SdfrSUBDIR+=rescue 4941016Sdfr.endif 5041016SdfrSUBDIR+=sbin 5141016Sdfr.if ${MK_CRYPT} != "no" 5241016SdfrSUBDIR+=secure 53178019Sjkim.endif 5441016Sdfr.if !defined(NO_SHARE) 5541016SdfrSUBDIR+=share 56178019Sjkim.endif 5741016SdfrSUBDIR+=sys usr.bin usr.sbin 5841016Sdfr# 5941016Sdfr# We must do etc/ last for install/distribute to work. 6041016Sdfr# 61116181SobrienSUBDIR+=etc 62116181Sobrien 63116181Sobrien# These are last, since it is nice to at least get the base system 64147271Smarius# rebuilt before you do them. 6541016Sdfr.for _DIR in ${LOCAL_DIRS} 6641016Sdfr.if exists(${.CURDIR}/${_DIR}/Makefile) 6741016SdfrSUBDIR+= ${_DIR} 6841016Sdfr.endif 6941016Sdfr.endfor 7041016Sdfr 7141016Sdfr.if defined(SUBDIR_OVERRIDE) 7241016SdfrSUBDIR= ${SUBDIR_OVERRIDE} 73189870Srnoland.endif 7441016Sdfr 75189870Srnoland.if defined(NOCLEAN) 76189870SrnolandNO_CLEAN= ${NOCLEAN} 7741016Sdfr.endif 7845720Speter.if defined(NO_CLEANDIR) 7941181SdfrCLEANDIR= clean cleandepend 8070834Swollman.else 81123442SalfredCLEANDIR= cleandir 8284880Syokota.endif 8341016Sdfr 8441016SdfrCVS?= cvs 85114216SkanCVSFLAGS?= -A -P -d -I! 8666860SphkSUP?= /usr/bin/csup 8741181SdfrSUPFLAGS?= -g -L 2 8841016Sdfr.if defined(SUPHOST) 89147271SmariusSUPFLAGS+= -h ${SUPHOST} 9041016Sdfr.endif 91147271Smarius 9241016SdfrMAKEOBJDIRPREFIX?= /usr/obj 93147271Smarius.if !defined(OSRELDATE) 94147271Smarius.if exists(/usr/include/osreldate.h) 95147271SmariusOSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ 9641016Sdfr /usr/include/osreldate.h 9741016Sdfr.else 9841016SdfrOSRELDATE= 0 9941016Sdfr.endif 10041016Sdfr.endif 10141016Sdfr 10241016Sdfr# Guess machine architecture from machine type, and vice versa. 103178019Sjkim.if !defined(TARGET_ARCH) && defined(TARGET) 104134405SgibbsTARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/} 105134405Sgibbs.elif !defined(TARGET) && defined(TARGET_ARCH) && \ 106134405Sgibbs ${TARGET_ARCH} != ${MACHINE_ARCH} 10741016SdfrTARGET= ${TARGET_ARCH} 108178019Sjkim.endif 109178019Sjkim# Otherwise, default to current machine type and architecture. 110178019SjkimTARGET?= ${MACHINE} 111134405SgibbsTARGET_ARCH?= ${MACHINE_ARCH} 11241016Sdfr 11384880SyokotaKNOWN_ARCHES?= amd64 arm i386 i386/pc98 ia64 powerpc sparc64 sparc64/sun4v 114178019Sjkim.if ${TARGET} == ${TARGET_ARCH} 11584880Syokota_t= ${TARGET} 11684880Syokota.else 117133297Sphilip_t= ${TARGET_ARCH}/${TARGET} 118178019Sjkim.endif 119133297Sphilip.for _t in ${_t} 120133297Sphilip.if empty(KNOWN_ARCHES:M${_t}) 121133297Sphilip.error Unknown target ${TARGET_ARCH}:${TARGET}. 122178019Sjkim.endif 123133297Sphilip.endfor 124133297Sphilip 12541016Sdfr.if ${TARGET} == ${MACHINE} 12641016SdfrTARGET_CPUTYPE?=${CPUTYPE} 127178019Sjkim.else 12883492SyokotaTARGET_CPUTYPE?= 12941016Sdfr.endif 130178019Sjkim 131178019Sjkim.if !empty(TARGET_CPUTYPE) 13241016Sdfr_TARGET_CPUTYPE=${TARGET_CPUTYPE} 13341016Sdfr.else 134178019Sjkim_TARGET_CPUTYPE=dummy 135178019Sjkim.endif 136178019Sjkim_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \ 137178019Sjkim -f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE 138178019Sjkim.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} 13941016Sdfr.error CPUTYPE global should be set with ?=. 14048778Syokota.endif 141178019Sjkim.if make(buildworld) 142178019SjkimBUILD_ARCH!= uname -p 143178019Sjkim.if ${MACHINE_ARCH} != ${BUILD_ARCH} 144178019Sjkim.error To cross-build, set TARGET_ARCH. 14548778Syokota.endif 14641016Sdfr.endif 14741016Sdfr.if ${MACHINE} == ${TARGET} && !defined(CROSS_BUILD_TESTING) 148178019SjkimOBJTREE= ${MAKEOBJDIRPREFIX} 149178019Sjkim.else 150178019SjkimOBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET} 151178019Sjkim.endif 15241016SdfrWORLDTMP= ${OBJTREE}${.CURDIR}/tmp 15341016Sdfr# /usr/games added for fortune which depend on strfile 154123442SalfredBPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games 155123442SalfredXPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games 156178019SjkimSTRICTTMPPATH= ${BPATH}:${XPATH} 157178019SjkimTMPPATH= ${STRICTTMPPATH}:${PATH} 158123442Salfred 159123442SalfredINSTALLTMP!= /usr/bin/mktemp -d -u -t install 160123442Salfred 161178019Sjkim# 162123442Salfred# Building a world goes through the following stages 163123442Salfred# 164183888Sdumbbell# 1. legacy stage [BMAKE] 165183888Sdumbbell# This stage is responsible for creating compatibility 166183888Sdumbbell# shims that are needed by the bootstrap-tools, 167183888Sdumbbell# build-tools and cross-tools stages. 168183888Sdumbbell# 1. bootstrap-tools stage [BMAKE] 169183888Sdumbbell# This stage is responsible for creating programs that 170183888Sdumbbell# are needed for backward compatibility reasons. They 171183888Sdumbbell# are not built as cross-tools. 172183888Sdumbbell# 2. build-tools stage [TMAKE] 173183888Sdumbbell# This stage is responsible for creating the object 174183888Sdumbbell# tree and building any tools that are needed during 175183888Sdumbbell# the build process. 176183888Sdumbbell# 3. cross-tools stage [XMAKE] 177183888Sdumbbell# This stage is responsible for creating any tools that 178183888Sdumbbell# are needed for cross-builds. A cross-compiler is one 179183888Sdumbbell# of them. 180183888Sdumbbell# 4. world stage [WMAKE] 181183888Sdumbbell# This stage actually builds the world. 182183888Sdumbbell# 5. install stage (optional) [IMAKE] 183183888Sdumbbell# This stage installs a previously built world. 184183888Sdumbbell# 185183888Sdumbbell 186183888SdumbbellBOOTSTRAPPING?= 0 187183888Sdumbbell 188183888Sdumbbell# Common environment for world related stages 189183888SdumbbellCROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ 190183888Sdumbbell MACHINE_ARCH=${TARGET_ARCH} \ 191183888Sdumbbell MACHINE=${TARGET} \ 192183888Sdumbbell CPUTYPE=${TARGET_CPUTYPE} \ 193183888Sdumbbell GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ 194183888Sdumbbell GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ 195183888Sdumbbell GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac 196183888Sdumbbell 197139982Sphilip# bootstrap-tools stage 198183888SdumbbellBMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ 199178019Sjkim PATH=${BPATH}:${PATH} \ 200183888Sdumbbell WORLDTMP=${WORLDTMP} \ 201183888Sdumbbell MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" 202183888SdumbbellBMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ 203183888Sdumbbell ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 204183888Sdumbbell DESTDIR= \ 205183888Sdumbbell BOOTSTRAPPING=${OSRELDATE} \ 206183888Sdumbbell -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ 207183888Sdumbbell -DWITHOUT_NLS -DNO_PIC -DWITHOUT_PROFILE -DNO_SHARED \ 208183888Sdumbbell -DNO_CPU_CFLAGS -DNO_WARNS 209183888Sdumbbell 210183888Sdumbbell# build-tools stage 211183888SdumbbellTMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ 212183888Sdumbbell ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 213183888Sdumbbell TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ 214183888Sdumbbell DESTDIR= \ 215183888Sdumbbell BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS 216183888Sdumbbell 217183888Sdumbbell# cross-tools stage 218183888SdumbbellXMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ 219183888Sdumbbell TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ 220183888Sdumbbell -DWITHOUT_FORTRAN -DWITHOUT_GDB 221183888Sdumbbell 222183888Sdumbbell# world stage 223183888SdumbbellWMAKEENV= ${CROSSENV} \ 224183888Sdumbbell _SHLIBDIRPREFIX=${WORLDTMP} \ 225183888Sdumbbell INSTALL="sh ${.CURDIR}/tools/install.sh" \ 226183888Sdumbbell PATH=${TMPPATH} 227183888SdumbbellWMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} 228183888Sdumbbell 229183888Sdumbbell.if ${TARGET_ARCH} == "amd64" 230183888Sdumbbell# 32 bit world 231139982SphilipLIB32TMP= ${OBJTREE}${.CURDIR}/lib32 232139982Sphilip 233183888Sdumbbell.if empty(TARGET_CPUTYPE) 234183888SdumbbellLIB32CPUTYPE= k8 235183888Sdumbbell.else 236183888SdumbbellLIB32CPUTYPE= ${TARGET_CPUTYPE} 237183888Sdumbbell.endif 238183888SdumbbellLIB32FLAGS= -m32 -march=${LIB32CPUTYPE} -mfancy-math-387 -DCOMPAT_32BIT \ 239183888Sdumbbell -iprefix ${LIB32TMP}/usr/ \ 240183888Sdumbbell -L${LIB32TMP}/usr/lib32 \ 241183888Sdumbbell -B${LIB32TMP}/usr/lib32 242244405Sdumbbell 243244405Sdumbbell# Yes, the flags are redundant. 244244405SdumbbellLIB32WMAKEENV= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ 245244405Sdumbbell _SHLIBDIRPREFIX=${LIB32TMP} \ 246183888Sdumbbell MACHINE=i386 \ 247183888Sdumbbell MACHINE_ARCH=i386 \ 248183888Sdumbbell INSTALL="sh ${.CURDIR}/tools/install.sh" \ 249183888Sdumbbell PATH=${TMPPATH} \ 250183888Sdumbbell CC="${CC} ${LIB32FLAGS}" \ 251183888Sdumbbell CXX="${CXX} ${LIB32FLAGS}" \ 252183888Sdumbbell OBJC="${OBJC} ${LIB32FLAGS}" \ 253183888Sdumbbell LD="${LD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \ 254183888Sdumbbell AS="${AS} --32" \ 255183888Sdumbbell LIBDIR=/usr/lib32 \ 256183888Sdumbbell SHLIBDIR=/usr/lib32 257183888Sdumbbell 258183888SdumbbellLIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} -DNO_CPU_CFLAGS -DCOMPAT_32BIT \ 259183888Sdumbbell -DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_NLS -DWITHOUT_INFO \ 260183888Sdumbbell -DWITHOUT_HTML DESTDIR=${LIB32TMP} 261183888SdumbbellLIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*} -DNO_INCS 262183888Sdumbbell.endif 263248478Sjkim 264248478Sjkim# install stage 265248478Sjkim.if empty(.MAKEFLAGS:M-n) 266248478SjkimIMAKEENV= ${CROSSENV} \ 267248478Sjkim PATH=${STRICTTMPPATH}:${INSTALLTMP} 268248478Sjkim.else 269248478SjkimIMAKEENV= ${CROSSENV} \ 270248478Sjkim PATH=${TMPPATH}:${INSTALLTMP} 271248478Sjkim.endif 272248478SjkimIMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 273248478Sjkim 274248478Sjkim# kernel stage 275248478SjkimKMAKEENV= ${WMAKEENV} 276248478SjkimKMAKE= ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} 277248478Sjkim 278248478Sjkim# 279248478Sjkim# buildworld 280248478Sjkim# 281248478Sjkim# Attempt to rebuild the entire system, with reasonable chance of 282248478Sjkim# success, regardless of how old your existing system is. 283248478Sjkim# 284248478Sjkim_worldtmp: 285248478Sjkim.if ${.CURDIR:C/[^,]//g} != "" 286248478Sjkim# The m4 build of sendmail files doesn't like it if ',' is used 287248478Sjkim# anywhere in the path of it's files. 288248478Sjkim @echo 289248478Sjkim @echo "*** Error: path to source tree contains a comma ','" 290248478Sjkim @echo 291248478Sjkim false 292248478Sjkim.endif 293248478Sjkim @echo 294248478Sjkim @echo "--------------------------------------------------------------" 29541016Sdfr @echo ">>> Rebuilding the temporary build tree" 29641016Sdfr @echo "--------------------------------------------------------------" 297178019Sjkim.if !defined(NO_CLEAN) 298178019Sjkim rm -rf ${WORLDTMP} 299178019Sjkim.if ${TARGET_ARCH} == "amd64" 300178019Sjkim rm -rf ${LIB32TMP} 301178019Sjkim.endif 302178019Sjkim.else 303178019Sjkim rm -rf ${WORLDTMP}/legacy/usr/include 304178019Sjkim# XXX - These two can depend on any header file. 305178019Sjkim rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c 306178019Sjkim rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c 307178019Sjkim.endif 308183888Sdumbbell.for _dir in \ 309248478Sjkim usr/bin usr/games usr/include/c++/3.4 usr/include/sys usr/lib \ 310248478Sjkim usr/libexec usr/sbin usr/share/dict \ 311178019Sjkim usr/share/groff_font/devX100 \ 312178019Sjkim usr/share/groff_font/devX100-12 \ 313178019Sjkim usr/share/groff_font/devX75 \ 314178019Sjkim usr/share/groff_font/devX75-12 \ 315178019Sjkim usr/share/groff_font/devascii \ 316178019Sjkim usr/share/groff_font/devcp1047 \ 317178019Sjkim usr/share/groff_font/devdvi \ 318178019Sjkim usr/share/groff_font/devhtml \ 319178019Sjkim usr/share/groff_font/devkoi8-r \ 320178019Sjkim usr/share/groff_font/devlatin1 \ 321178019Sjkim usr/share/groff_font/devlbp \ 322178019Sjkim usr/share/groff_font/devlj4 \ 323178019Sjkim usr/share/groff_font/devps \ 324178019Sjkim usr/share/groff_font/devutf8 \ 325178019Sjkim usr/share/tmac/mdoc usr/share/tmac/mm 326178019Sjkim mkdir -p ${WORLDTMP}/legacy/${_dir} 327178019Sjkim.endfor 328178019Sjkim.for _dir in \ 329178019Sjkim lib usr/bin usr/include usr/lib/compat/aout usr/libdata/ldscripts \ 330178019Sjkim usr/libexec usr/sbin usr/share/misc \ 331178019Sjkim usr/share/snmp/defs usr/share/snmp/mibs 332240211Sjhb mkdir -p ${WORLDTMP}/${_dir} 333240211Sjhb.endfor 334178019Sjkim mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 335178019Sjkim -p ${WORLDTMP}/usr/include >/dev/null 336178019Sjkim ln -sf ${.CURDIR}/sys ${WORLDTMP} 337178019Sjkim.if ${MK_BIND_LIBS} != "no" 338189870Srnoland mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \ 33941016Sdfr -p ${WORLDTMP}/usr/include >/dev/null 340114293Smarkm.endif 34141016Sdfr_legacy: 34241016Sdfr @echo 343178019Sjkim @echo "--------------------------------------------------------------" 344178019Sjkim @echo ">>> stage 1.1: legacy release compatibility shims" 345178019Sjkim @echo "--------------------------------------------------------------" 346178019Sjkim ${_+_}cd ${.CURDIR}; ${BMAKE} legacy 347178019Sjkim_bootstrap-tools: 34841016Sdfr @echo 34941016Sdfr @echo "--------------------------------------------------------------" 350178019Sjkim @echo ">>> stage 1.2: bootstrap tools" 351178019Sjkim @echo "--------------------------------------------------------------" 352178019Sjkim ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools 353178019Sjkim_cleanobj: 354178019Sjkim.if !defined(NO_CLEAN) 355178019Sjkim @echo 356178019Sjkim @echo "--------------------------------------------------------------" 357178019Sjkim @echo ">>> stage 2.1: cleaning up the object tree" 358178019Sjkim @echo "--------------------------------------------------------------" 35941016Sdfr ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/} 360178019Sjkim.if ${TARGET_ARCH} == "amd64" 361178019Sjkim ${_+_}cd ${.CURDIR}; ${LIB32WMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/} 362178019Sjkim.endif 363178019Sjkim.endif 364178019Sjkim_obj: 365178019Sjkim @echo 366178019Sjkim @echo "--------------------------------------------------------------" 367178019Sjkim @echo ">>> stage 2.2: rebuilding the object tree" 368178019Sjkim @echo "--------------------------------------------------------------" 369178019Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj 37041016Sdfr_build-tools: 37141016Sdfr @echo 372178019Sjkim @echo "--------------------------------------------------------------" 37341016Sdfr @echo ">>> stage 2.3: build tools" 374135945Sphilip @echo "--------------------------------------------------------------" 375200674Sdumbbell ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools 376200674Sdumbbell_cross-tools: 377200674Sdumbbell @echo 378255210Seadler @echo "--------------------------------------------------------------" 379135945Sphilip @echo ">>> stage 3: cross tools" 380135945Sphilip @echo "--------------------------------------------------------------" 381255210Seadler ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools 382248478Sjkim_includes: 383248478Sjkim @echo 384139628Sphilip @echo "--------------------------------------------------------------" 385139628Sphilip @echo ">>> stage 4.1: building includes" 386139628Sphilip @echo "--------------------------------------------------------------" 38741016Sdfr ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes 388178019Sjkim_libraries: 389178019Sjkim @echo 390178019Sjkim @echo "--------------------------------------------------------------" 39141016Sdfr @echo ">>> stage 4.2: building libraries" 39241016Sdfr @echo "--------------------------------------------------------------" 393178019Sjkim ${_+_}cd ${.CURDIR}; \ 394178019Sjkim ${WMAKE} -DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \ 395178019Sjkim -DWITHOUT_MAN -DWITHOUT_NLS -DWITHOUT_PROFILE libraries 396178019Sjkim_depend: 39741016Sdfr @echo 39841016Sdfr @echo "--------------------------------------------------------------" 39941016Sdfr @echo ">>> stage 4.3: make dependencies" 400178019Sjkim @echo "--------------------------------------------------------------" 401178019Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend 402178019Sjkimeverything: 403178019Sjkim @echo 40441016Sdfr @echo "--------------------------------------------------------------" 40541016Sdfr @echo ">>> stage 4.4: building everything" 40641016Sdfr @echo "--------------------------------------------------------------" 407178019Sjkim ${_+_}cd ${.CURDIR}; ${WMAKE} par-all 408178019Sjkim.if ${TARGET_ARCH} == "amd64" 40941016Sdfrbuild32: 41041016Sdfr @echo 411178019Sjkim @echo "--------------------------------------------------------------" 412178019Sjkim @echo ">>> stage 5.1: building 32 bit shim libraries" 413178019Sjkim @echo "--------------------------------------------------------------" 414178019Sjkim.for _dir in \ 415178019Sjkim lib lib32 usr/bin usr/include usr/lib32 usr/libdata/ldscripts \ 41641016Sdfr usr/libexec usr/sbin usr/share/misc \ 417178019Sjkim usr/share/snmp/defs usr/share/snmp/mibs 418178019Sjkim mkdir -p ${LIB32TMP}/${_dir} 419178019Sjkim.endfor 420178019Sjkim mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 421178019Sjkim -p ${LIB32TMP}/usr/include >/dev/null 422178019Sjkim mkdir -p ${WORLDTMP} 42341016Sdfr ln -sf ${.CURDIR}/sys ${WORLDTMP} 424178019Sjkim.if ${MK_KERBEROS} != "no" 425178019Sjkim.for _t in obj depend all 426178019Sjkim cd ${.CURDIR}/kerberos5/tools; \ 427178019Sjkim MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= ${_t} 428178019Sjkim.endfor 429178019Sjkim.endif 430178019Sjkim.for _t in obj includes 431178019Sjkim cd ${.CURDIR}/include; ${LIB32WMAKE} ${_t} 432178019Sjkim cd ${.CURDIR}/lib; ${LIB32WMAKE} ${_t} 433178019Sjkim cd ${.CURDIR}/gnu/lib; ${LIB32WMAKE} ${_t} 434178019Sjkim.if ${MK_CRYPT} != "no" 435178019Sjkim cd ${.CURDIR}/secure/lib; ${LIB32WMAKE} ${_t} 436178019Sjkim.endif 437178019Sjkim.if ${MK_KERBEROS} != "no" 438178019Sjkim cd ${.CURDIR}/kerberos5/lib; ${LIB32WMAKE} ${_t} 439178019Sjkim.endif 440178019Sjkim.endfor 441178019Sjkim.for _dir in usr.bin/lex/lib 442178019Sjkim cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} obj 443178019Sjkim.endfor 444178019Sjkim.for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic 445178019Sjkim cd ${.CURDIR}/${_dir}; \ 446178019Sjkim MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= build-tools 447178019Sjkim.endfor 448178019Sjkim cd ${.CURDIR}; \ 449178019Sjkim ${LIB32WMAKE} -f Makefile.inc1 libraries 450178019Sjkim.for _t in obj depend all 451178019Sjkim cd ${.CURDIR}/libexec/rtld-elf; \ 452178019Sjkim PROG=ld-elf32.so.1 ${LIB32WMAKE} ${_t} 453178019Sjkim.endfor 454178019Sjkim 45541016Sdfrdistribute32 install32: 45641016Sdfr.if make(distribute32) 457233580Sjkim mkdir -p ${DISTDIR}/${DISTRIBUTION}/usr/lib32 # XXX add to mtree 45841016Sdfr.else 459178019Sjkim mkdir -p ${DESTDIR}/usr/lib32 # XXX add to mtree 460178019Sjkim.endif 46141016Sdfr cd ${.CURDIR}/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 462178019Sjkim cd ${.CURDIR}/gnu/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 463178019Sjkim.if ${MK_CRYPT} != "no" 464178019Sjkim cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 465178019Sjkim.endif 466178019Sjkim cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//} 467178019Sjkim.endif 468178019Sjkim 469178019Sjkim 470178019SjkimWMAKE_TGTS= 471178019Sjkim.if !defined(SUBDIR_OVERRIDE) 472248478SjkimWMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools 473178019Sjkim.endif 474178019SjkimWMAKE_TGTS+= _cleanobj _obj _build-tools 47541016Sdfr.if !defined(SUBDIR_OVERRIDE) 476178019SjkimWMAKE_TGTS+= _cross-tools 477178019Sjkim.endif 478178019SjkimWMAKE_TGTS+= _includes _libraries _depend everything 479178019Sjkim.if ${TARGET_ARCH} == "amd64" && ${MK_LIB32} != "no" 48041016SdfrWMAKE_TGTS+= build32 481178019Sjkim.endif 482178019Sjkim 483178019Sjkimbuildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue 484178019Sjkim.ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue 485178019Sjkim 486178019Sjkimbuildworld_prologue: 487178019Sjkim @echo "--------------------------------------------------------------" 488178019Sjkim @echo ">>> World build started on `LC_ALL=C date`" 489178019Sjkim @echo "--------------------------------------------------------------" 490178019Sjkim 491178019Sjkimbuildworld_epilogue: 492178019Sjkim @echo 493178019Sjkim @echo "--------------------------------------------------------------" 494178019Sjkim @echo ">>> World build completed on `LC_ALL=C date`" 495178019Sjkim @echo "--------------------------------------------------------------" 496178019Sjkim 497179474Sphilip# 498179474Sphilip# We need to have this as a target because the indirection between Makefile 499178019Sjkim# and Makefile.inc1 causes the correct PATH to be used, rather than a 500178019Sjkim# modification of the current environment's PATH. In addition, we need 501178019Sjkim# to quote multiword values. 502178019Sjkim# 503178019Sjkimbuildenvvars: 504178019Sjkim @echo ${WMAKEENV:Q} 505178019Sjkim 506178019Sjkimbuildenv: 507248478Sjkim @echo Entering world for ${TARGET_ARCH}:${TARGET} 508248478Sjkim @cd ${.CURDIR} && env ${WMAKEENV} sh || true 509178019Sjkim 510178019SjkimTOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything:Nbuild32} 51141016Sdfrtoolchain: ${TOOLCHAIN_TGTS} 512178019Sjkimkernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} 513178019Sjkim 51441016Sdfr# 51541016Sdfr# installcheck 51641016Sdfr# 51741016Sdfr# Checks to be sure system is ready for installworld/installkernel. 51883147Syokota# 51941016Sdfrinstallcheck: 52041016Sdfr 52158230Syokota# 52254629Syokota# Require DESTDIR to be set if installing for a different architecture. 52341016Sdfr# 52441016Sdfr.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} 52541016Sdfr.if !make(distributeworld) 52641016Sdfrinstallcheck: installcheck_DESTDIR 52741016Sdfrinstallcheck_DESTDIR: 528178019Sjkim.if !defined(DESTDIR) || empty(DESTDIR) 529178019Sjkim @echo "ERROR: Please set DESTDIR!"; \ 530178019Sjkim false 53141016Sdfr.endif 53241016Sdfr.endif 53347625Sphk.endif 534126080Sphk 535126080Sphk# 536111815Sphk# Check for missing UIDs/GIDs. 537111815Sphk# 538111815SphkCHECK_UIDS= 539178017SjkimCHECK_GIDS= audit 540111815Sphk.if ${MK_SENDMAIL} != "no" 541111815SphkCHECK_UIDS+= smmsp 542111815SphkCHECK_GIDS+= smmsp 54341016Sdfr.endif 54441016Sdfr.if ${MK_PF} != "no" 54541016SdfrCHECK_UIDS+= proxy 54641016SdfrCHECK_GIDS+= proxy authpf 54741016Sdfr.endif 54841016Sdfrinstallcheck: installcheck_UGID 549178019Sjkiminstallcheck_UGID: 55041016Sdfr.for uid in ${CHECK_UIDS} 551178019Sjkim @if ! `id -u ${uid} >/dev/null 2>&1`; then \ 552178019Sjkim echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \ 55341016Sdfr false; \ 554178019Sjkim fi 55541016Sdfr.endfor 55641016Sdfr.for gid in ${CHECK_GIDS} 55741016Sdfr @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \ 55841016Sdfr echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \ 55941016Sdfr false; \ 560178019Sjkim fi 56141016Sdfr.endfor 562178019Sjkim 563178019Sjkim# 56441016Sdfr# distributeworld 565178019Sjkim# 56641016Sdfr# Distributes everything compiled by a `buildworld'. 56741016Sdfr# 56841016Sdfr# installworld 56941016Sdfr# 57041016Sdfr# Installs everything compiled by a 'buildworld'. 571178019Sjkim# 572178019Sjkimdistributeworld installworld: installcheck 573178019Sjkim mkdir -p ${INSTALLTMP} 57441016Sdfr for prog in [ awk cap_mkdb cat chflags chmod chown \ 575178019Sjkim date echo egrep find grep install-info \ 576178019Sjkim ln lockf make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ 577178019Sjkim test true uname wc zic; do \ 578178019Sjkim cp `which $$prog` ${INSTALLTMP}; \ 579178019Sjkim done 580178019Sjkim ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//} 581178019Sjkim rm -rf ${INSTALLTMP} 582178019Sjkim 583178019Sjkim# 584178019Sjkim# reinstall 585178019Sjkim# 586178019Sjkim# If you have a build server, you can NFS mount the source and obj directories 587178019Sjkim# and do a 'make reinstall' on the *client* to install new binaries from the 588178019Sjkim# most recent server build. 589178019Sjkim# 59041016Sdfrreinstall: 591178019Sjkim @echo "--------------------------------------------------------------" 592178019Sjkim @echo ">>> Making hierarchy" 593178019Sjkim @echo "--------------------------------------------------------------" 594178019Sjkim ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 hierarchy 595178019Sjkim @echo 59641016Sdfr @echo "--------------------------------------------------------------" 597178019Sjkim @echo ">>> Installing everything" 598178019Sjkim @echo "--------------------------------------------------------------" 59941016Sdfr ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 600178019Sjkim.if ${TARGET_ARCH} == "amd64" && ${MK_LIB32} != "no" 60141016Sdfr ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 60241016Sdfr.endif 60341016Sdfr 60441016Sdfrredistribute: 60541016Sdfr @echo "--------------------------------------------------------------" 606178019Sjkim @echo ">>> Distributing everything" 607178019Sjkim @echo "--------------------------------------------------------------" 60841016Sdfr ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute 609178019Sjkim.if ${TARGET_ARCH} == "amd64" && ${MK_LIB32} != "no" 610178019Sjkim ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 DISTRIBUTION=lib32 611178019Sjkim.endif 612178019Sjkim 613178019Sjkimdistrib-dirs distribution: 61441016Sdfr cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} ${.TARGET} 615178019Sjkim 616178019Sjkim# 61741016Sdfr# buildkernel and installkernel 618178019Sjkim# 619178019Sjkim# Which kernels to build and/or install is specified by setting 62041016Sdfr# KERNCONF. If not defined a GENERIC kernel is built/installed. 621178019Sjkim# Only the existing (depending TARGET) config files are used 62241016Sdfr# for building kernels and only the first of these is designated 62341016Sdfr# as the one being installed. 62441016Sdfr# 62541016Sdfr# Note that we have to use TARGET instead of TARGET_ARCH when 62641016Sdfr# we're in kernel-land. Since only TARGET_ARCH is (expected) to 627178019Sjkim# be set to cross-build, we have to make sure TARGET is set 62841016Sdfr# properly. 629178019Sjkim 630178019Sjkim.if !defined(KERNCONF) && defined(KERNEL) 63141016SdfrKERNCONF= ${KERNEL} 632178019SjkimKERNWARN= 63341016Sdfr.else 63441016SdfrKERNCONF?= GENERIC 63541016Sdfr.endif 63641016SdfrINSTKERNNAME?= kernel 63741016Sdfr 638178019SjkimKERNSRCDIR?= ${.CURDIR}/sys 63941016SdfrKRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf 640178019SjkimKRNLOBJDIR= ${OBJTREE}${KERNSRCDIR} 641178019SjkimKERNCONFDIR?= ${KRNLCONFDIR} 642178019Sjkim 643178019SjkimBUILDKERNELS= 644178019SjkimINSTALLKERNEL= 645178019Sjkim.for _kernel in ${KERNCONF} 646178019Sjkim.if exists(${KERNCONFDIR}/${_kernel}) 647178019SjkimBUILDKERNELS+= ${_kernel} 648178019Sjkim.if empty(INSTALLKERNEL) 649178019SjkimINSTALLKERNEL= ${_kernel} 650178019Sjkim.endif 651178019Sjkim.endif 65241016Sdfr.endfor 653178019Sjkim 65441016Sdfr# 65541016Sdfr# buildkernel 65641016Sdfr# 65741016Sdfr# Builds all kernels defined by BUILDKERNELS. 65841016Sdfr# 65941016Sdfrbuildkernel: 660178019Sjkim.if empty(BUILDKERNELS) 66141016Sdfr @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \ 662178019Sjkim false 663178019Sjkim.endif 66441016Sdfr.if defined(KERNWARN) 665178019Sjkim @echo "--------------------------------------------------------------" 66641016Sdfr @echo ">>> WARNING: KERNEL= setting should be changed to KERNCONF=" 66741016Sdfr @echo "--------------------------------------------------------------" 66841016Sdfr @sleep 3 66941016Sdfr.endif 67041016Sdfr @echo 67141016Sdfr.for _kernel in ${BUILDKERNELS} 67241016Sdfr @echo "--------------------------------------------------------------" 67341016Sdfr @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" 67441016Sdfr @echo "--------------------------------------------------------------" 675178019Sjkim @echo "===> ${_kernel}" 67641016Sdfr mkdir -p ${KRNLOBJDIR} 677178019Sjkim.if !defined(NO_KERNELCONFIG) 678178019Sjkim @echo 67941016Sdfr @echo "--------------------------------------------------------------" 680178019Sjkim @echo ">>> stage 1: configuring the kernel" 68141016Sdfr @echo "--------------------------------------------------------------" 68241016Sdfr cd ${KRNLCONFDIR}; \ 68341016Sdfr PATH=${TMPPATH} \ 68441016Sdfr config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ 68541016Sdfr ${KERNCONFDIR}/${_kernel} 686178019Sjkim.endif 687178019Sjkim.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) 68841016Sdfr @echo 689178019Sjkim @echo "--------------------------------------------------------------" 690178019Sjkim @echo ">>> stage 2.1: cleaning up the object tree" 691178019Sjkim @echo "--------------------------------------------------------------" 692178019Sjkim cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR} 693178019Sjkim.endif 694178019Sjkim @echo 695178019Sjkim @echo "--------------------------------------------------------------" 696178019Sjkim @echo ">>> stage 2.2: rebuilding the object tree" 697178019Sjkim @echo "--------------------------------------------------------------" 698178019Sjkim cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj 699178019Sjkim @echo 700178019Sjkim @echo "--------------------------------------------------------------" 701178019Sjkim @echo ">>> stage 2.3: build tools" 702178019Sjkim @echo "--------------------------------------------------------------" 70341016Sdfr cd ${KRNLOBJDIR}/${_kernel}; \ 70441016Sdfr MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ 70541016Sdfr ${MAKE} -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile 70641016Sdfr# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. 70741016Sdfr.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) 70841016Sdfr.for target in obj depend all 70941016Sdfr cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ 71041016Sdfr MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ 71141016Sdfr ${MAKE} -DNO_CPU_CFLAGS ${target} 71241016Sdfr.endfor 71341016Sdfr.endif 714178019Sjkim.if !defined(NO_KERNELDEPEND) 715178019Sjkim @echo 716178019Sjkim @echo "--------------------------------------------------------------" 717178019Sjkim @echo ">>> stage 3.1: making dependencies" 718178019Sjkim @echo "--------------------------------------------------------------" 719178019Sjkim cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} depend -DNO_MODULES_OBJ 720178019Sjkim.endif 721178019Sjkim @echo 72241016Sdfr @echo "--------------------------------------------------------------" 723178019Sjkim @echo ">>> stage 3.2: building everything" 724178019Sjkim @echo "--------------------------------------------------------------" 725178019Sjkim cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ 726178019Sjkim @echo "--------------------------------------------------------------" 72741016Sdfr @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`" 728178019Sjkim @echo "--------------------------------------------------------------" 72941016Sdfr.endfor 73041016Sdfr 73141016Sdfr# 73241016Sdfr# installkernel, etc. 73341016Sdfr# 73441016Sdfr# Install the kernel defined by INSTALLKERNEL 735178019Sjkim# 736178019Sjkiminstallkernel installkernel.debug \ 737178019Sjkimreinstallkernel reinstallkernel.debug: installcheck 738178019Sjkim.if empty(INSTALLKERNEL) 739178019Sjkim @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ 740178019Sjkim false 741178019Sjkim.endif 742178019Sjkim @echo "--------------------------------------------------------------" 743178019Sjkim @echo ">>> Installing kernel" 744178019Sjkim @echo "--------------------------------------------------------------" 745178019Sjkim cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 746178019Sjkim ${CROSSENV} PATH=${TMPPATH} \ 747178019Sjkim ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} 748178019Sjkim 749178019Sjkim# 750248479Sjkim# doxygen 751178019Sjkim# 752178019Sjkim# Build the API documentation with doxygen 753178019Sjkim# 754178019Sjkimdoxygen: 75541016Sdfr @if [ ! -x `/usr/bin/which doxygen` ]; then \ 756178019Sjkim echo "You need doxygen (devel/doxygen) to generate the API documentation of the kernel." | /usr/bin/fmt; \ 757178019Sjkim exit 1; \ 758178019Sjkim fi 759178019Sjkim cd ${.CURDIR}/tools/kerneldoc/subsys && ${MAKE} obj all 76041016Sdfr 76141016Sdfr# 76241016Sdfr# update 76341016Sdfr# 76441016Sdfr# Update the source tree, by running cvsup and/or running cvs to update to the 765178019Sjkim# latest copy. 766178019Sjkim# 76741016Sdfrupdate: 76841016Sdfr.if defined(SUP_UPDATE) 769178019Sjkim @echo "--------------------------------------------------------------" 770178019Sjkim @echo ">>> Running ${SUP}" 771178019Sjkim @echo "--------------------------------------------------------------" 772178019Sjkim.if defined(SUPFILE) 773178019Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE} 77441016Sdfr.endif 775178019Sjkim.if defined(SUPFILE1) 776178019Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE1} 777178019Sjkim.endif 778178019Sjkim.if defined(SUPFILE2) 779178019Sjkim @${SUP} ${SUPFLAGS} ${SUPFILE2} 780178019Sjkim.endif 781178019Sjkim.if defined(PORTSSUPFILE) && !defined(NO_PORTSUPDATE) 782178019Sjkim @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 783178019Sjkim.endif 78441016Sdfr.if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) 78541016Sdfr @${SUP} ${SUPFLAGS} ${DOCSUPFILE} 78641016Sdfr.endif 78741016Sdfr.endif 78841016Sdfr.if defined(CVS_UPDATE) 78941016Sdfr @echo "--------------------------------------------------------------" 790178019Sjkim @echo ">>> Updating ${.CURDIR} from CVS repository" ${CVSROOT} 79141016Sdfr @echo "--------------------------------------------------------------" 792178019Sjkim cd ${.CURDIR}; ${CVS} -R -q update ${CVSFLAGS} 793178019Sjkim.endif 794178019Sjkim 795178019Sjkim# 796178019Sjkim# ------------------------------------------------------------------------ 797178019Sjkim# 798178019Sjkim# From here onwards are utility targets used by the 'make world' and 799178019Sjkim# related targets. If your 'world' breaks, you may like to try to fix 800178019Sjkim# the problem and manually run the following targets to attempt to 80141016Sdfr# complete the build. Beware, this is *not* guaranteed to work, you 80241016Sdfr# need to have a pretty good grip on the current state of the system 803178019Sjkim# to attempt to manually finish it. If in doubt, 'make world' again. 80441016Sdfr# 805178019Sjkim 80641016Sdfr# 80741016Sdfr# legacy: Build compatibility shims for the next three targets 80841016Sdfr# 80941016Sdfrlegacy: 81041016Sdfr.if ${BOOTSTRAPPING} < 503000 81184880Syokota @echo "ERROR: Source upgrades from versions prior to 5.3 not supported."; \ 81241016Sdfr false 813178019Sjkim.endif 814178019Sjkim.for _tool in tools/build 815178019Sjkim ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \ 81641016Sdfr cd ${.CURDIR}/${_tool}; \ 817178019Sjkim ${MAKE} DIRPRFX=${_tool}/ obj; \ 818178019Sjkim ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \ 819178019Sjkim ${MAKE} DIRPRFX=${_tool}/ depend; \ 820178019Sjkim ${MAKE} DIRPRFX=${_tool}/ all; \ 821178019Sjkim ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 822178019Sjkim.endfor 823178019Sjkim 824178019Sjkim# 825178019Sjkim# bootstrap-tools: Build tools needed for compatibility 826178019Sjkim# 827178019Sjkim.if ${MK_GAMES} != "no" 828178019Sjkim_strfile= games/fortune/strfile 829178019Sjkim.endif 830178019Sjkim 831178019Sjkim.if ${MK_CXX} != "no" 832178019Sjkim_gperf= gnu/usr.bin/gperf 833178019Sjkim.if ${BOOTSTRAPPING} < 700004 834178019Sjkim_groff= gnu/usr.bin/groff 835178019Sjkim.else 836178019Sjkim_groff= gnu/usr.bin/groff/tmac 837178019Sjkim.endif 83841016Sdfr.endif 839178019Sjkim 840178019Sjkim.if ${BOOTSTRAPPING} < 600029 841178019Sjkim_texinfo= gnu/usr.bin/texinfo 842178019Sjkim.endif 843178019Sjkim 844178019Sjkim.if ${BOOTSTRAPPING} < 600015 845178019Sjkim_cap_mkdb= usr.bin/cap_mkdb 846178019Sjkim.endif 847178019Sjkim 848178019Sjkim.if ${BOOTSTRAPPING} < 600018 849178019Sjkim_colldef= usr.bin/colldef 850178019Sjkim.endif 851178019Sjkim 852178019Sjkim.if ${BOOTSTRAPPING} < 600017 853178019Sjkim_gencat= usr.bin/gencat 854178019Sjkim.endif 855178019Sjkim 856178019Sjkim.if ${BOOTSTRAPPING} < 600016 857178019Sjkim_mklocale= usr.bin/mklocale 858178019Sjkim.endif 859178019Sjkim 86045789Speter.if ${BOOTSTRAPPING} < 700018 861178019Sjkim_gensnmptree= usr.sbin/bsnmpd/gensnmptree 862178019Sjkim.endif 863178019Sjkim 864178019Sjkim.if ${MK_RESCUE} != "no" && \ 86545789Speter ${BOOTSTRAPPING} < 700026 866178019Sjkim_crunchgen= usr.sbin/crunch/crunchgen 86741016Sdfr.endif 868233580Sjkim 869233580Sjkim.if ${BOOTSTRAPPING} < 600020 870233580Sjkim_pwd_mkdb= usr.sbin/pwd_mkdb 871233580Sjkim.endif 87241016Sdfr 873178019Sjkimbootstrap-tools: 874178019Sjkim.for _tool in \ 875178019Sjkim ${_strfile} \ 876178019Sjkim ${_gperf} \ 877178019Sjkim ${_groff} \ 878178019Sjkim ${_texinfo} \ 879178019Sjkim ${_cap_mkdb} \ 880178019Sjkim ${_colldef} \ 881178019Sjkim ${_gencat} \ 882178019Sjkim usr.bin/lorder \ 88341016Sdfr usr.bin/makewhatis \ 884178019Sjkim ${_mklocale} \ 885178019Sjkim usr.bin/rpcgen \ 88641016Sdfr usr.bin/xinstall \ 887178019Sjkim ${_gensnmptree} \ 888178019Sjkim usr.sbin/config \ 889178019Sjkim ${_crunchgen} \ 890178019Sjkim ${_pwd_mkdb} 89141016Sdfr ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 892178019Sjkim cd ${.CURDIR}/${_tool}; \ 89341016Sdfr ${MAKE} DIRPRFX=${_tool}/ obj; \ 89441016Sdfr ${MAKE} DIRPRFX=${_tool}/ depend; \ 89541016Sdfr ${MAKE} DIRPRFX=${_tool}/ all; \ 89684880Syokota ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 89741016Sdfr.endfor 898178019Sjkim 89941016Sdfr# 900183888Sdumbbell# build-tools: Build special purpose build tools 901183888Sdumbbell# 902183888Sdumbbell.if defined(MODULES_WITH_WORLD) && exists(${KERNSRCDIR}/modules) 903183888Sdumbbell_aicasm= sys/modules/aic7xxx/aicasm 904183888Sdumbbell.endif 905183888Sdumbbell 906183888Sdumbbell.if !defined(NO_SHARE) 907183888Sdumbbell_share= share/syscons/scrnmaps 908183888Sdumbbell.endif 909183888Sdumbbell 910183888Sdumbbell.if ${MK_KERBEROS} != "no" 911183888Sdumbbell_kerberos5_tools= kerberos5/tools 912183888Sdumbbell.endif 913183888Sdumbbell 914183888Sdumbbell.if ${MK_RESCUE} != "no" 915244405Sdumbbell_rescue= rescue/rescue 916244405Sdumbbell.endif 917244405Sdumbbell 918183888Sdumbbellbuild-tools: 919183888Sdumbbell.for _tool in \ 920183888Sdumbbell bin/csh \ 921183888Sdumbbell bin/sh \ 922183888Sdumbbell ${_rescue} \ 923183888Sdumbbell lib/ncurses/ncurses \ 924183888Sdumbbell lib/ncurses/ncursesw \ 925183888Sdumbbell ${_share} \ 926183888Sdumbbell ${_aicasm} \ 927183888Sdumbbell usr.bin/awk \ 928183888Sdumbbell lib/libmagic \ 929183888Sdumbbell usr.sbin/sysinstall 930183888Sdumbbell ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ 931200674Sdumbbell cd ${.CURDIR}/${_tool}; \ 932200674Sdumbbell ${MAKE} DIRPRFX=${_tool}/ obj; \ 933200674Sdumbbell ${MAKE} DIRPRFX=${_tool}/ build-tools 934200674Sdumbbell.endfor 935200674Sdumbbell.for _tool in \ 936200674Sdumbbell gnu/usr.bin/cc/cc_tools \ 937200674Sdumbbell ${_kerberos5_tools} 938200674Sdumbbell ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \ 939200674Sdumbbell cd ${.CURDIR}/${_tool}; \ 940200674Sdumbbell ${MAKE} DIRPRFX=${_tool}/ obj; \ 941200674Sdumbbell ${MAKE} DIRPRFX=${_tool}/ depend; \ 942200674Sdumbbell ${MAKE} DIRPRFX=${_tool}/ all 943200674Sdumbbell.endfor 944200674Sdumbbell 945200674Sdumbbell# 946200674Sdumbbell# cross-tools: Build cross-building tools 947200674Sdumbbell# 948200674Sdumbbell.if ${TARGET_ARCH} != ${MACHINE_ARCH} 949200674Sdumbbell.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" 950200674Sdumbbell_btxld= usr.sbin/btxld 951200674Sdumbbell.endif 952200674Sdumbbell.if ${MK_RESCUE} != "no" || defined(RELEASEDIR) 953200674Sdumbbell_crunchide= usr.sbin/crunch/crunchide 954200674Sdumbbell.endif 955200674Sdumbbell.if ${TARGET_ARCH} == "i386" && defined(RELEASEDIR) 956200674Sdumbbell_kgzip= usr.sbin/kgzip 957200674Sdumbbell.endif 958200674Sdumbbell.endif 959200674Sdumbbell 960200674Sdumbbellcross-tools: 961178019Sjkim.for _tool in \ 962178019Sjkim gnu/usr.bin/binutils \ 963178019Sjkim gnu/usr.bin/cc \ 964178019Sjkim usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ 965178019Sjkim ${_btxld} \ 966178019Sjkim ${_crunchide} \ 967178019Sjkim ${_kgzip} 968178019Sjkim ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 969178019Sjkim cd ${.CURDIR}/${_tool}; \ 97041016Sdfr ${MAKE} DIRPRFX=${_tool}/ obj; \ 971178019Sjkim ${MAKE} DIRPRFX=${_tool}/ depend; \ 972178019Sjkim ${MAKE} DIRPRFX=${_tool}/ all; \ 973178019Sjkim ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install 974178019Sjkim.endfor 975178019Sjkim 976178019Sjkim# 97741016Sdfr# hierarchy - ensure that all the needed directories are present 978178019Sjkim# 97941016Sdfrhierarchy: 980178019Sjkim cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 981178019Sjkim 982178019Sjkim# 983178019Sjkim# libraries - build all libraries, and install them under ${DESTDIR}. 984178019Sjkim# 985178019Sjkim# The list of libraries with dependents (${_prebuild_libs}) and their 986178019Sjkim# interdependencies (__L) are built automatically by the 987178019Sjkim# ${.CURDIR}/tools/make_libdeps.sh script. 98841016Sdfr# 98941016Sdfrlibraries: 990178019Sjkim cd ${.CURDIR}; \ 991178019Sjkim ${MAKE} -f Makefile.inc1 _startup_libs; \ 992178019Sjkim ${MAKE} -f Makefile.inc1 _prebuild_libs; \ 99341016Sdfr ${MAKE} -f Makefile.inc1 _generic_libs; 994178019Sjkim 995178019Sjkim# These dependencies are not automatically generated: 99641016Sdfr# 997178019Sjkim# gnu/lib/csu, gnu/lib/libgcc and lib/csu must be built before all 998178019Sjkim# shared libraries for ELF. 999178019Sjkim# 1000178019Sjkim_startup_libs= gnu/lib/csu gnu/lib/libgcc 1001178019Sjkim.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) 1002178019Sjkim_startup_libs+= lib/csu/${MACHINE_ARCH}-elf 1003178019Sjkim.else 1004178019Sjkim_startup_libs+= lib/csu/${MACHINE_ARCH} 1005178019Sjkim.endif 1006178019Sjkim 100741016Sdfr_prebuild_libs= ${_kerberos5_lib_libasn1} ${_kerberos5_lib_libkrb5} \ 1008178019Sjkim ${_kerberos5_lib_libroken} \ 1009178019Sjkim lib/libbz2 lib/libcom_err lib/libcrypt lib/libexpat \ 1010240211Sjhb ${_lib_libgssapi} ${_lib_libipx} \ 101158230Syokota lib/libkiconv lib/libkvm lib/libmd \ 1012178019Sjkim lib/ncurses/ncurses lib/ncurses/ncursesw \ 101341016Sdfr lib/libopie lib/libpam \ 101441016Sdfr lib/libradius lib/libsbuf lib/libtacplus lib/libutil \ 101584880Syokota ${_lib_libypclnt} lib/libz lib/msun \ 101684880Syokota ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ 101784880Syokota ${_secure_lib_libssl} 1018178019Sjkim 1019178019Sjkim_generic_libs= gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib 1020178019Sjkim 102184880Syokotalib/libopie__L lib/libtacplus__L: lib/libmd__L 1022178019Sjkim 1023178019Sjkim.if ${MK_CRYPT} != "no" 1024178019Sjkim.if ${MK_OPENSSL} != "no" 1025178019Sjkim_secure_lib_libcrypto= secure/lib/libcrypto 102684880Syokota_secure_lib_libssl= secure/lib/libssl 1027178019Sjkimlib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L 1028178019Sjkim.if ${MK_OPENSSH} != "no" 1029240211Sjhb_secure_lib_libssh= secure/lib/libssh 103084880Syokotasecure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L 1031178019Sjkim.if ${MK_KERBEROS} != "no" 1032178019Sjkimsecure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ 1033178019Sjkim kerberos5/lib/libasn1__L lib/libcom_err__L lib/libmd__L \ 1034178019Sjkim kerberos5/lib/libroken__L 1035178019Sjkim.endif 1036178019Sjkim.endif 103784880Syokota.endif 1038178019Sjkim_secure_lib= secure/lib 1039178019Sjkim.endif 104084880Syokota 1041178019Sjkim.if ${MK_IPX} != "no" 1042178019Sjkim_lib_libipx= lib/libipx 1043178019Sjkim.endif 1044178019Sjkim 1045178019Sjkim.if ${MK_KERBEROS} != "no" 1046178019Sjkim_kerberos5_lib= kerberos5/lib 1047178019Sjkim_kerberos5_lib_libasn1= kerberos5/lib/libasn1 1048178019Sjkim_kerberos5_lib_libkrb5= kerberos5/lib/libkrb5 1049178019Sjkim_kerberos5_lib_libroken= kerberos5/lib/libroken 1050178019Sjkim_lib_libgssapi= lib/libgssapi 105184880Syokota.endif 1052178019Sjkim 1053178019Sjkim.if ${MK_NIS} != "no" 1054178019Sjkim_lib_libypclnt= lib/libypclnt 1055178019Sjkim.endif 1056178019Sjkim 1057178019Sjkim.if ${MK_OPENSSL} == "no" 1058178019Sjkimlib/libradius__L: lib/libmd__L 1059178019Sjkim.endif 1060178019Sjkim 1061178019Sjkim.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} 106284880Syokota${_lib}__L: .PHONY 1063178019Sjkim.if exists(${.CURDIR}/${_lib}) 1064178019Sjkim ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ 1065178019Sjkim cd ${.CURDIR}/${_lib}; \ 1066178019Sjkim ${MAKE} DIRPRFX=${_lib}/ obj; \ 1067178019Sjkim ${MAKE} DIRPRFX=${_lib}/ depend; \ 1068178019Sjkim ${MAKE} DIRPRFX=${_lib}/ all; \ 1069178019Sjkim ${MAKE} DIRPRFX=${_lib}/ install 1070178019Sjkim.endif 1071178019Sjkim.endfor 1072178019Sjkim 1073178019Sjkim# libpam is special: we need to build static PAM modules before 1074178019Sjkim# static PAM library, and dynamic PAM library before dynamic PAM 1075178019Sjkim# modules. 1076178019Sjkimlib/libpam__L: .PHONY 1077178019Sjkim ${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \ 107884880Syokota cd ${.CURDIR}/lib/libpam; \ 1079178019Sjkim ${MAKE} DIRPRFX=lib/libpam/ obj; \ 108084880Syokota ${MAKE} DIRPRFX=lib/libpam/ depend; \ 1081178019Sjkim ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ 1082178019Sjkim ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install 1083178019Sjkim 1084178019Sjkim_startup_libs: ${_startup_libs:S/$/__L/} 1085178019Sjkim_prebuild_libs: ${_prebuild_libs:S/$/__L/} 1086178019Sjkim_generic_libs: ${_generic_libs:S/$/__L/} 1087178019Sjkim 1088178019Sjkim.for __target in all clean cleandepend cleandir depend includes obj 1089178019Sjkim.for entry in ${SUBDIR} 1090178019Sjkim${entry}.${__target}__D: .PHONY 1091178019Sjkim ${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 1092178019Sjkim ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \ 1093178019Sjkim edir=${entry}.${MACHINE_ARCH}; \ 1094178019Sjkim cd ${.CURDIR}/$${edir}; \ 1095178019Sjkim else \ 1096178019Sjkim ${ECHODIR} "===> ${DIRPRFX}${entry} (${__target})"; \ 1097178019Sjkim edir=${entry}; \ 1098178019Sjkim cd ${.CURDIR}/$${edir}; \ 109984880Syokota fi; \ 110084880Syokota ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 1101178019Sjkim.endfor 1102178019Sjkimpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 110384880Syokota.endfor 110484880Syokota 110541016Sdfr.include <bsd.subdir.mk> 110641016Sdfr 110783147Syokota.if make(delete-old) || make(delete-old-libs) || make(check-old) 110883147Syokota 110983147Syokota# 1110178019Sjkim# check for / delete old files section 1111178019Sjkim# 1112178019Sjkim 1113178019Sjkim.include "ObsoleteFiles.inc" 111483147Syokota 1115178019SjkimOLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \ 111683931Syokotaelse you can not start such an application. Consult UPDATING for more \ 1117178019Sjkiminformation regarding how to cope with the removal/revision bump of a \ 1118178019Sjkimspecific library." 1119178019Sjkim 1120178019Sjkim.if !defined(BATCH_DELETE_OLD_FILES) 112183931SyokotaRM_I=-i 1122178019Sjkim.else 1123178019SjkimRM_I=-v 1124178019Sjkim.endif 112583931Syokota 1126178019Sjkimdelete-old-files: 1127178019Sjkim @echo ">>> Removing old files (only deletes safe to delete libs)" 1128178019Sjkim.for file in ${OLD_FILES} 1129178019Sjkim# Ask for every old file if the user really wants to remove it. 1130178019Sjkim# It's annoying, but better safe than sorry. 1131178019Sjkim @if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \ 1132178019Sjkim rm ${RM_I} "${DESTDIR}/${file}" || true; \ 1133178019Sjkim if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then\ 1134178019Sjkim echo "Removing schg flag on ${DESTDIR}/${file}"; \ 1135178019Sjkim chflags noschg "${DESTDIR}/${file}"; \ 1136178019Sjkim rm ${RM_I} "${DESTDIR}/${file}"; \ 1137178019Sjkim fi; \ 1138216491Sjhb fi 1139178019Sjkim.endfor 114083147Syokota# Remove catpages without corresponding manpages. 114183147Syokota @3<&0; \ 1142178019Sjkim find ${DESTDIR}/usr/share/man/cat* ! -type d | \ 1143178019Sjkim sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ 1144178019Sjkim while read catpage; do \ 1145178019Sjkim read manpage; \ 1146178019Sjkim if [ ! -e "$${manpage}" ]; then \ 1147178019Sjkim rm ${RM_I} $${catpage} <&3 ; \ 1148178019Sjkim fi; \ 114941016Sdfr done 115041016Sdfr @echo ">>> Old files removed" 115141016Sdfr 115241016Sdfrcheck-old-files: 1153178019Sjkim @echo ">>> Checking for old files" 1154178019Sjkim.for file in ${OLD_FILES} 1155178019Sjkim @if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \ 1156178019Sjkim echo "${DESTDIR}/${file}"; \ 1157178019Sjkim fi 1158178019Sjkim.endfor 1159178019Sjkim# Check for catpages without corresponding manpages. 116041016Sdfr @find ${DESTDIR}/usr/share/man/cat* ! -type d | \ 116141016Sdfr sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ 1162178019Sjkim while read catpage; do \ 116341016Sdfr read manpage; \ 116458230Syokota if [ ! -e "$${manpage}" ]; then \ 1165178019Sjkim echo $${catpage} ; \ 1166178019Sjkim fi; \ 1167216491Sjhb done 1168178019Sjkim 1169178019Sjkimdelete-old-libs: 1170178019Sjkim @echo ">>> Removing old libraries" 1171178019Sjkim @echo "${OLD_LIBS_MESSAGE}" | fmt 1172178019Sjkim.for file in ${OLD_LIBS} 1173178019Sjkim @if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \ 117458230Syokota rm ${RM_I} "${DESTDIR}/${file}" || true; \ 1175178019Sjkim if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then\ 1176178019Sjkim echo "Removing schg flag on ${DESTDIR}/${file}"; \ 1177178019Sjkim chflags noschg "${DESTDIR}/${file}"; \ 1178178019Sjkim rm ${RM_I} "${DESTDIR}/${file}"; \ 117958230Syokota fi; \ 1180178019Sjkim fi 118158230Syokota.endfor 1182233580Sjkim @echo ">>> Old libraries removed" 118358230Syokota 118458230Syokotacheck-old-libs: 118558230Syokota @echo ">>> Checking for old libraries" 118658230Syokota.for file in ${OLD_LIBS} 1187178019Sjkim @if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \ 1188178019Sjkim echo "${DESTDIR}/${file}"; \ 1189178019Sjkim fi 119041016Sdfr.endfor 1191178019Sjkim 119243105Sdfrdelete-old-dirs: 1193178019Sjkim @echo ">>> Removing old directories" 1194178019Sjkim.for dir in ${OLD_DIRS} 1195178019Sjkim# Don't fail if an old directory isn't empty. 1196178019Sjkim @if [ -d "${DESTDIR}/${dir}" ]; then \ 1197178019Sjkim rmdir -v "${DESTDIR}/${dir}" || true; \ 1198178019Sjkim else \ 119941016Sdfr if [ -L "${DESTDIR}/${dir}" ]; then \ 1200178019Sjkim echo "${DESTDIR}/${dir} is a link, please remove everything manually."; \ 1201178019Sjkim fi; \ 1202178019Sjkim fi 1203178019Sjkim.endfor 1204178019Sjkim @echo ">>> Old directories removed" 120541016Sdfr 1206178019Sjkimcheck-old-dirs: 1207178019Sjkim @echo ">>> Checking for old directories" 120841016Sdfr.for dir in ${OLD_DIRS} 1209178019Sjkim @if [ -d "${DESTDIR}/${dir}" ]; then \ 1210178019Sjkim echo "${DESTDIR}/${dir}"; \ 1211178019Sjkim else \ 1212178019Sjkim if [ -L "${DESTDIR}/${dir}" ]; then \ 1213178019Sjkim echo "${DESTDIR}/${dir} is a link, please remove everything manually."; \ 1214178019Sjkim fi; \ 1215178019Sjkim fi 1216178019Sjkim.endfor 1217178019Sjkim 1218178019Sjkimdelete-old: delete-old-files delete-old-dirs 1219178019Sjkim @echo "To remove old libraries run '${MAKE} delete-old-libs'." 1220178019Sjkim 122141016Sdfrcheck-old: check-old-files check-old-libs check-old-dirs 1222178019Sjkim @echo "To remove old files and directories run '${MAKE} delete-old'." 1223178019Sjkim @echo "To remove old libraries run '${MAKE} delete-old-libs'." 1224178019Sjkim 1225178019Sjkim.endif 1226178019Sjkim 122741016Sdfr# 1228178019Sjkim# showconfig - show build configuration. 1229178019Sjkim# 1230178019Sjkimshowconfig: 1231178019Sjkim @${MAKE} -n -f bsd.own.mk -V dummy -dg1 | grep ^MK_ | sort 1232178019Sjkim