Makefile.inc1 revision 243322
1169689Skan# 2169689Skan# $FreeBSD: head/Makefile.inc1 243322 2012-11-20 03:21:26Z marcel $ 3169689Skan# 4169689Skan# Make command line options: 5169689Skan# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir 6169689Skan# -DNO_CLEAN do not clean at all 7169689Skan# -DNO_SHARE do not go into share subdir 8169689Skan# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,DEPEND,OBJ} 9169689Skan# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel 10169689Skan# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel 11169689Skan# -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel 12169689Skan# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel 13169689Skan# -DNO_PORTSUPDATE do not update ports in ${MAKE} update 14169689Skan# -DNO_DOCUPDATE do not update doc in ${MAKE} update 15169689Skan# -DNO_WWWUPDATE do not update www in ${MAKE} update 16169689Skan# -DNO_CTF do not run the DTrace CTF conversion tools on built objects 17169689Skan# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list 18169689Skan# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target 19169689Skan# LOCAL_MTREE="list of mtree files" to process to allow local directories 20169689Skan# to be created before files are installed 21169689Skan# LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools 22169689Skan# list 23169689Skan# TARGET="machine" to crossbuild world for a different machine type 24169689Skan# TARGET_ARCH= may be required when a TARGET supports multiple endians 25169689Skan# BUILDENV_SHELL= shell to launch for the buildenv target (def:/bin/sh) 26169689Skan 27169689Skan# 28169689Skan# The intended user-driven targets are: 29169689Skan# buildworld - rebuild *everything*, including glue to help do upgrades 30169689Skan# installworld- install everything built by "buildworld" 31169689Skan# doxygen - build API documentation of the kernel 32169689Skan# update - convenient way to update your source tree (eg: cvsup/cvs) 33169689Skan# 34169689Skan# Standard targets (not defined here) are documented in the makefiles in 35169689Skan# /usr/share/mk. These include: 36169689Skan# obj depend all install clean cleandepend cleanobj 37169689Skan 38169689Skan# You are supposed to define both of these when calling Makefile.inc1 39169689Skan# directly. However, some old scripts don't. Cope for the moment, but 40169689Skan# issue a new warning for a transition period. 41169689Skan.if defined(TARGET) && !defined(TARGET_ARCH) 42169689Skan.warning "You must pass both TARGET and TARGET_ARCH to Makefile.inc1. Setting TARGET_ARCH=${TARGET}." 43169689SkanTARGET_ARCH=${TARGET} 44169689Skan.endif 45169689Skan.if !defined(TARGET) || !defined(TARGET_ARCH) 46169689Skan.error "Both TARGET and TARGET_ARCH must be defined." 47169689Skan.endif 48169689Skan 49169689Skan.include <bsd.own.mk> 50169689Skan.include <bsd.arch.inc.mk> 51169689Skan.include <bsd.compiler.mk> 52169689Skan 53169689Skan# We must do share/info early so that installation of info `dir' 54169689Skan# entries works correctly. Do it first since it is less likely to 55169689Skan# grow dependencies on include and lib than vice versa. 56169689Skan# 57169689Skan# We must do lib/ and libexec/ before bin/, because if installworld 58169689Skan# installs a new /bin/sh, the 'make' command will *immediately* 59169689Skan# use that new version. And the new (dynamically-linked) /bin/sh 60169689Skan# will expect to find appropriate libraries in /lib and /libexec. 61169689Skan# 62169689SkanSUBDIR= share/info lib libexec 63169689SkanSUBDIR+=bin 64169689Skan.if ${MK_GAMES} != "no" 65169689SkanSUBDIR+=games 66169689Skan.endif 67169689Skan.if ${MK_CDDL} != "no" 68169689SkanSUBDIR+=cddl 69169689Skan.endif 70169689SkanSUBDIR+=gnu include 71169689Skan.if ${MK_KERBEROS} != "no" 72169689SkanSUBDIR+=kerberos5 73169689Skan.endif 74169689Skan.if ${MK_RESCUE} != "no" 75169689SkanSUBDIR+=rescue 76169689Skan.endif 77169689SkanSUBDIR+=sbin 78169689Skan.if ${MK_CRYPT} != "no" 79169689SkanSUBDIR+=secure 80169689Skan.endif 81169689Skan.if !defined(NO_SHARE) 82169689SkanSUBDIR+=share 83169689Skan.endif 84169689SkanSUBDIR+=sys usr.bin usr.sbin 85169689Skan.if ${MK_OFED} != "no" 86169689SkanSUBDIR+=contrib/ofed 87169689Skan.endif 88169689Skan# 89169689Skan# We must do etc/ last for install/distribute to work. 90169689Skan# 91169689SkanSUBDIR+=etc 92169689Skan 93169689Skan# These are last, since it is nice to at least get the base system 94169689Skan# rebuilt before you do them. 95169689Skan.for _DIR in ${LOCAL_LIB_DIRS} ${LOCAL_DIRS} 96169689Skan.if exists(${.CURDIR}/${_DIR}/Makefile) 97169689SkanSUBDIR+= ${_DIR} 98169689Skan.endif 99169689Skan.endfor 100169689Skan 101169689Skan.if defined(SUBDIR_OVERRIDE) 102169689SkanSUBDIR= ${SUBDIR_OVERRIDE} 103169689Skan.endif 104169689Skan 105169689Skan.if defined(NOCLEAN) 106169689SkanNO_CLEAN= ${NOCLEAN} 107169689Skan.endif 108169689Skan.if defined(NO_CLEANDIR) 109169689SkanCLEANDIR= clean cleandepend 110169689Skan.else 111169689SkanCLEANDIR= cleandir 112169689Skan.endif 113169689Skan 114169689SkanLOCAL_TOOL_DIRS?= 115169689Skan 116169689SkanBUILDENV_SHELL?=/bin/sh 117169689Skan 118169689SkanCVS?= cvs 119169689SkanCVSFLAGS?= -A -P -d -I! 120169689SkanSVN?= svn 121169689SkanSVNFLAGS?= -r HEAD 122169689SkanSUP?= /usr/bin/csup 123169689SkanSUPFLAGS?= -g -L 2 124169689Skan.if defined(SUPHOST) 125169689SkanSUPFLAGS+= -h ${SUPHOST} 126169689Skan.endif 127169689Skan 128169689SkanMAKEOBJDIRPREFIX?= /usr/obj 129169689Skan.if !defined(OSRELDATE) 130169689Skan.if exists(/usr/include/osreldate.h) 131169689SkanOSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ 132169689Skan /usr/include/osreldate.h 133169689Skan.else 134169689SkanOSRELDATE= 0 135169689Skan.endif 136169689Skan.endif 137169689Skan 138169689Skan.if !defined(VERSION) 139169689SkanVERSION!= uname -srp 140169689SkanVERSION+= ${OSRELDATE} 141169689Skan.endif 142169689Skan 143169689SkanKNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm armv6eb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 144169689Skan.if ${TARGET} == ${TARGET_ARCH} 145169689Skan_t= ${TARGET} 146169689Skan.else 147169689Skan_t= ${TARGET_ARCH}/${TARGET} 148169689Skan.endif 149169689Skan.for _t in ${_t} 150169689Skan.if empty(KNOWN_ARCHES:M${_t}) 151169689Skan.error Unknown target ${TARGET_ARCH}:${TARGET}. 152169689Skan.endif 153169689Skan.endfor 154169689Skan 155169689Skan.if ${TARGET} == ${MACHINE} 156169689SkanTARGET_CPUTYPE?=${CPUTYPE} 157169689Skan.else 158169689SkanTARGET_CPUTYPE?= 159169689Skan.endif 160169689Skan 161169689Skan.if !empty(TARGET_CPUTYPE) 162169689Skan_TARGET_CPUTYPE=${TARGET_CPUTYPE} 163169689Skan.else 164169689Skan_TARGET_CPUTYPE=dummy 165169689Skan.endif 166169689Skan_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \ 167169689Skan -f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE 168169689Skan.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} 169169689Skan.error CPUTYPE global should be set with ?=. 170169689Skan.endif 171169689Skan.if make(buildworld) 172169689SkanBUILD_ARCH!= uname -p 173169689Skan.if ${MACHINE_ARCH} != ${BUILD_ARCH} 174169689Skan.error To cross-build, set TARGET_ARCH. 175169689Skan.endif 176169689Skan.endif 177169689Skan.if ${MACHINE} == ${TARGET} && ${MACHINE_ARCH} == ${TARGET_ARCH} && !defined(CROSS_BUILD_TESTING) 178169689SkanOBJTREE= ${MAKEOBJDIRPREFIX} 179169689Skan.else 180169689SkanOBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH} 181169689Skan.endif 182169689SkanWORLDTMP= ${OBJTREE}${.CURDIR}/tmp 183169689Skan# /usr/games added for fortune which depend on strfile 184169689SkanBPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games 185169689SkanXPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games 186169689SkanSTRICTTMPPATH= ${BPATH}:${XPATH} 187169689SkanTMPPATH= ${STRICTTMPPATH}:${PATH} 188169689Skan 189169689Skan# 190169689Skan# Avoid running mktemp(1) unless actually needed. 191169689Skan# It may not be functional, e.g., due to new ABI 192169689Skan# when in the middle of installing over this system. 193169689Skan# 194169689Skan.if make(distributeworld) || make(installworld) 195169689SkanINSTALLTMP!= /usr/bin/mktemp -d -u -t install 196169689Skan.endif 197169689Skan 198169689Skan# 199169689Skan# Building a world goes through the following stages 200169689Skan# 201169689Skan# 1. legacy stage [BMAKE] 202169689Skan# This stage is responsible for creating compatibility 203169689Skan# shims that are needed by the bootstrap-tools, 204169689Skan# build-tools and cross-tools stages. 205169689Skan# 1. bootstrap-tools stage [BMAKE] 206169689Skan# This stage is responsible for creating programs that 207169689Skan# are needed for backward compatibility reasons. They 208169689Skan# are not built as cross-tools. 209169689Skan# 2. build-tools stage [TMAKE] 210169689Skan# This stage is responsible for creating the object 211169689Skan# tree and building any tools that are needed during 212169689Skan# the build process. 213169689Skan# 3. cross-tools stage [XMAKE] 214169689Skan# This stage is responsible for creating any tools that 215169689Skan# are needed for cross-builds. A cross-compiler is one 216169689Skan# of them. 217169689Skan# 4. world stage [WMAKE] 218169689Skan# This stage actually builds the world. 219169689Skan# 5. install stage (optional) [IMAKE] 220169689Skan# This stage installs a previously built world. 221169689Skan# 222169689Skan 223169689SkanBOOTSTRAPPING?= 0 224169689Skan 225169689Skan# Common environment for world related stages 226169689SkanCROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ 227169689Skan MACHINE_ARCH=${TARGET_ARCH} \ 228169689Skan MACHINE=${TARGET} \ 229169689Skan CPUTYPE=${TARGET_CPUTYPE} 230169689Skan.if ${MK_GROFF} != "no" 231169689SkanCROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ 232169689Skan GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ 233169689Skan GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac 234169689Skan.endif 235169689Skan 236169689Skan# bootstrap-tools stage 237169689SkanBMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ 238169689Skan PATH=${BPATH}:${PATH} \ 239169689Skan WORLDTMP=${WORLDTMP} \ 240169689Skan VERSION="${VERSION}" \ 241169689Skan MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \ 242169689Skan COMPILER_TYPE=${COMPILER_TYPE} 243169689SkanBMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ 244169689Skan ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 245169689Skan DESTDIR= \ 246169689Skan BOOTSTRAPPING=${OSRELDATE} \ 247169689Skan SSP_CFLAGS= \ 248169689Skan -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ 249169689Skan -DNO_PIC -DNO_PROFILE -DNO_SHARED \ 250169689Skan -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD 251169689Skan 252169689Skan# build-tools stage 253169689SkanTMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ 254169689Skan ${BMAKEENV} ${MAKE} -f Makefile.inc1 \ 255169689Skan TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ 256169689Skan DESTDIR= \ 257169689Skan BOOTSTRAPPING=${OSRELDATE} \ 258169689Skan SSP_CFLAGS= \ 259169689Skan -DNO_LINT \ 260169689Skan -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD 261169689Skan 262169689Skan# cross-tools stage 263169689SkanXMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ 264169689Skan TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ 265169689Skan -DWITHOUT_GDB 266169689Skan 267169689Skan# world stage 268169689SkanWMAKEENV= ${CROSSENV} \ 269169689Skan _SHLIBDIRPREFIX=${WORLDTMP} \ 270169689Skan _LDSCRIPTROOT= \ 271169689Skan VERSION="${VERSION}" \ 272169689Skan INSTALL="sh ${.CURDIR}/tools/install.sh" \ 273169689Skan PATH=${TMPPATH} 274169689Skan.if ${MK_CDDL} == "no" 275169689SkanWMAKEENV+= NO_CTF=1 276169689Skan.endif 277169689Skan.if ${CC:T:Mgcc} == "gcc" 278169689SkanWMAKE_COMPILER_TYPE= gcc 279169689Skan.elif ${CC:T:Mclang} == "clang" 280169689SkanWMAKE_COMPILER_TYPE= clang 281169689Skan.elif ${MK_CLANG_IS_CC} == "no" 282169689SkanWMAKE_COMPILER_TYPE= gcc 283169689Skan.else 284169689SkanWMAKE_COMPILER_TYPE= clang 285169689Skan.endif 286169689SkanWMAKEENV+= COMPILER_TYPE=${WMAKE_COMPILER_TYPE} 287169689SkanWMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} 288169689Skan 289169689Skan.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" 290169689Skan# 32 bit world 291169689SkanLIB32TMP= ${OBJTREE}${.CURDIR}/lib32 292169689Skan 293169689Skan.if ${TARGET_ARCH} == "amd64" 294169689Skan.if empty(TARGET_CPUTYPE) 295169689SkanLIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2 296169689Skan.else 297169689SkanLIB32CPUFLAGS= -march=${TARGET_CPUTYPE} 298169689Skan.endif 299169689SkanLIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \ 300169689Skan MACHINE_CPU="i686 mmx sse sse2" 301169689SkanLIB32WMAKEFLAGS= \ 302169689Skan AS="${AS} --32" \ 303169689Skan LD="${LD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" 304169689Skan 305169689Skan.elif ${TARGET_ARCH} == "powerpc64" 306169689Skan.if empty(TARGET_CPUTYPE) 307169689SkanLIB32CPUFLAGS= -mcpu=powerpc 308169689Skan.else 309169689SkanLIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE} 310169689Skan.endif 311169689SkanLIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc 312169689SkanLIB32WMAKEFLAGS= \ 313169689Skan LD="${LD} -m elf32ppc_fbsd" 314169689Skan.endif 315169689Skan 316169689Skan 317169689SkanLIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \ 318169689Skan -isystem ${LIB32TMP}/usr/include/ \ 319169689Skan -L${LIB32TMP}/usr/lib32 \ 320169689Skan -B${LIB32TMP}/usr/lib32 321169689Skan 322169689Skan# Yes, the flags are redundant. 323169689SkanLIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ 324169689Skan _SHLIBDIRPREFIX=${LIB32TMP} \ 325169689Skan _LDSCRIPTROOT=${LIB32TMP} \ 326169689Skan VERSION="${VERSION}" \ 327169689Skan INSTALL="sh ${.CURDIR}/tools/install.sh" \ 328169689Skan PATH=${TMPPATH} \ 329169689Skan LIBDIR=/usr/lib32 \ 330169689Skan SHLIBDIR=/usr/lib32 \ 331169689Skan COMPILER_TYPE=${WMAKE_COMPILER_TYPE} 332169689SkanLIB32WMAKEFLAGS+= \ 333169689Skan CC="${CC} ${LIB32FLAGS}" \ 334169689Skan CXX="${CXX} ${LIB32FLAGS}" \ 335169689Skan DESTDIR=${LIB32TMP} \ 336169689Skan -DCOMPAT_32BIT \ 337169689Skan -DNO_CPU_CFLAGS \ 338169689Skan -DNO_CTF \ 339169689Skan -DNO_LINT 340169689Skan 341169689SkanLIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \ 342169689Skan -DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO -DWITHOUT_HTML 343169689SkanLIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS 344169689Skan.endif 345169689Skan 346169689Skan# install stage 347169689SkanIMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*} 348169689SkanIMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 349169689Skan.if empty(.MAKEFLAGS:M-n) 350169689SkanIMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \ 351169689Skan LD_LIBRARY_PATH=${INSTALLTMP} \ 352169689Skan PATH_LOCALE=${INSTALLTMP}/locale 353169689SkanIMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh 354169689Skan.else 355169689SkanIMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP} 356169689Skan.endif 357169689Skan 358169689Skan# kernel stage 359169689SkanKMAKEENV= ${WMAKEENV} 360169689SkanKMAKE= ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} 361169689Skan 362169689Skan# 363169689Skan# buildworld 364169689Skan# 365169689Skan# Attempt to rebuild the entire system, with reasonable chance of 366169689Skan# success, regardless of how old your existing system is. 367169689Skan# 368169689Skan_worldtmp: 369169689Skan.if ${.CURDIR:C/[^,]//g} != "" 370169689Skan# The m4 build of sendmail files doesn't like it if ',' is used 371169689Skan# anywhere in the path of it's files. 372169689Skan @echo 373169689Skan @echo "*** Error: path to source tree contains a comma ','" 374169689Skan @echo 375169689Skan false 376169689Skan.endif 377169689Skan @echo 378169689Skan @echo "--------------------------------------------------------------" 379169689Skan @echo ">>> Rebuilding the temporary build tree" 380169689Skan @echo "--------------------------------------------------------------" 381169689Skan.if !defined(NO_CLEAN) 382169689Skan rm -rf ${WORLDTMP} 383169689Skan.if defined(LIB32TMP) 384169689Skan rm -rf ${LIB32TMP} 385169689Skan.endif 386169689Skan.else 387169689Skan rm -rf ${WORLDTMP}/legacy/usr/include 388169689Skan# XXX - These three can depend on any header file. 389169689Skan rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c 390169689Skan rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/kdump_subr.c 391169689Skan rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c 392169689Skan.endif 393169689Skan.for _dir in \ 394169689Skan lib usr legacy/usr 395169689Skan mkdir -p ${WORLDTMP}/${_dir} 396169689Skan.endfor 397169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ 398169689Skan -p ${WORLDTMP}/legacy/usr >/dev/null 399169689Skan.if ${MK_GROFF} != "no" 400169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.groff.dist \ 401169689Skan -p ${WORLDTMP}/legacy/usr >/dev/null 402169689Skan.endif 403169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ 404169689Skan -p ${WORLDTMP}/usr >/dev/null 405169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 406169689Skan -p ${WORLDTMP}/usr/include >/dev/null 407169689Skan ln -sf ${.CURDIR}/sys ${WORLDTMP} 408169689Skan.if ${MK_BIND_LIBS} != "no" 409169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \ 410169689Skan -p ${WORLDTMP}/usr/include >/dev/null 411169689Skan.endif 412169689Skan.for _mtree in ${LOCAL_MTREE} 413169689Skan mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null 414169689Skan.endfor 415169689Skan_legacy: 416169689Skan @echo 417169689Skan @echo "--------------------------------------------------------------" 418169689Skan @echo ">>> stage 1.1: legacy release compatibility shims" 419169689Skan @echo "--------------------------------------------------------------" 420169689Skan ${_+_}cd ${.CURDIR}; ${BMAKE} legacy 421169689Skan_bootstrap-tools: 422169689Skan @echo 423169689Skan @echo "--------------------------------------------------------------" 424169689Skan @echo ">>> stage 1.2: bootstrap tools" 425169689Skan @echo "--------------------------------------------------------------" 426169689Skan ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools 427169689Skan_cleanobj: 428169689Skan.if !defined(NO_CLEAN) 429169689Skan @echo 430169689Skan @echo "--------------------------------------------------------------" 431169689Skan @echo ">>> stage 2.1: cleaning up the object tree" 432169689Skan @echo "--------------------------------------------------------------" 433169689Skan ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/} 434169689Skan.if defined(LIB32TMP) 435169689Skan ${_+_}cd ${.CURDIR}; ${LIB32WMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/} 436169689Skan.endif 437169689Skan.endif 438169689Skan_obj: 439169689Skan @echo 440169689Skan @echo "--------------------------------------------------------------" 441169689Skan @echo ">>> stage 2.2: rebuilding the object tree" 442169689Skan @echo "--------------------------------------------------------------" 443169689Skan ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj 444169689Skan_build-tools: 445169689Skan @echo 446169689Skan @echo "--------------------------------------------------------------" 447169689Skan @echo ">>> stage 2.3: build tools" 448169689Skan @echo "--------------------------------------------------------------" 449169689Skan ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools 450169689Skan_cross-tools: 451169689Skan @echo 452169689Skan @echo "--------------------------------------------------------------" 453169689Skan @echo ">>> stage 3: cross tools" 454169689Skan @echo "--------------------------------------------------------------" 455169689Skan ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools 456169689Skan_includes: 457169689Skan @echo 458169689Skan @echo "--------------------------------------------------------------" 459169689Skan @echo ">>> stage 4.1: building includes" 460169689Skan @echo "--------------------------------------------------------------" 461169689Skan ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes 462169689Skan_libraries: 463169689Skan @echo 464169689Skan @echo "--------------------------------------------------------------" 465169689Skan @echo ">>> stage 4.2: building libraries" 466169689Skan @echo "--------------------------------------------------------------" 467169689Skan ${_+_}cd ${.CURDIR}; \ 468169689Skan ${WMAKE} -DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \ 469169689Skan -DWITHOUT_MAN -DNO_PROFILE libraries 470169689Skan_depend: 471169689Skan @echo 472169689Skan @echo "--------------------------------------------------------------" 473169689Skan @echo ">>> stage 4.3: make dependencies" 474169689Skan @echo "--------------------------------------------------------------" 475169689Skan ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend 476169689Skaneverything: 477169689Skan @echo 478169689Skan @echo "--------------------------------------------------------------" 479169689Skan @echo ">>> stage 4.4: building everything" 480169689Skan @echo "--------------------------------------------------------------" 481169689Skan ${_+_}cd ${.CURDIR}; ${WMAKE} par-all 482169689Skan.if defined(LIB32TMP) 483169689Skanbuild32: 484169689Skan @echo 485169689Skan @echo "--------------------------------------------------------------" 486169689Skan @echo ">>> stage 5.1: building 32 bit shim libraries" 487169689Skan @echo "--------------------------------------------------------------" 488169689Skan mkdir -p ${LIB32TMP}/usr/include 489169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ 490169689Skan -p ${LIB32TMP}/usr >/dev/null 491169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 492169689Skan -p ${LIB32TMP}/usr/include >/dev/null 493169689Skan mkdir -p ${WORLDTMP} 494169689Skan ln -sf ${.CURDIR}/sys ${WORLDTMP} 495169689Skan.for _t in obj includes 496169689Skan cd ${.CURDIR}/include; ${LIB32WMAKE} DIRPRFX=include/ ${_t} 497169689Skan cd ${.CURDIR}/lib; ${LIB32WMAKE} DIRPRFX=lib/ ${_t} 498169689Skan.if ${MK_CDDL} != "no" 499169689Skan cd ${.CURDIR}/cddl/lib; ${LIB32WMAKE} DIRPRFX=cddl/lib/ ${_t} 500169689Skan.endif 501169689Skan cd ${.CURDIR}/gnu/lib; ${LIB32WMAKE} DIRPRFX=gnu/lib/ ${_t} 502169689Skan.if ${MK_CRYPT} != "no" 503169689Skan cd ${.CURDIR}/secure/lib; ${LIB32WMAKE} DIRPRFX=secure/lib/ ${_t} 504169689Skan.endif 505169689Skan.if ${MK_KERBEROS} != "no" 506169689Skan cd ${.CURDIR}/kerberos5/lib; ${LIB32WMAKE} DIRPRFX=kerberos5/lib ${_t} 507169689Skan.endif 508169689Skan.endfor 509169689Skan.for _dir in usr.bin/lex/lib 510169689Skan cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} DIRPRFX=${_dir}/ obj 511169689Skan.endfor 512169689Skan.for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic 513169689Skan cd ${.CURDIR}/${_dir}; \ 514169689Skan MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} SSP_CFLAGS= DESTDIR= \ 515169689Skan DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF \ 516169689Skan -DEARLY_BUILD build-tools 517169689Skan.endfor 518169689Skan cd ${.CURDIR}; \ 519169689Skan ${LIB32WMAKE} -f Makefile.inc1 libraries 520169689Skan.for _t in obj depend all 521169689Skan cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \ 522169689Skan DIRPRFX=libexec/rtld-elf/ ${_t} 523169689Skan cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \ 524169689Skan DIRPRFX=usr.bin/ldd ${_t} 525169689Skan.endfor 526169689Skan 527169689Skandistribute32 install32: 528169689Skan cd ${.CURDIR}/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 529169689Skan.if ${MK_CDDL} != "no" 530169689Skan cd ${.CURDIR}/cddl/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 531169689Skan.endif 532169689Skan cd ${.CURDIR}/gnu/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 533169689Skan.if ${MK_CRYPT} != "no" 534169689Skan cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 535169689Skan.endif 536169689Skan.if ${MK_KERBEROS} != "no" 537169689Skan cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} 538169689Skan.endif 539169689Skan cd ${.CURDIR}/libexec/rtld-elf; \ 540169689Skan PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//} 541169689Skan cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} ${.TARGET:S/32$//} 542169689Skan.endif 543169689Skan 544169689SkanWMAKE_TGTS= 545169689Skan.if !defined(SUBDIR_OVERRIDE) 546169689SkanWMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools 547169689Skan.endif 548169689SkanWMAKE_TGTS+= _cleanobj _obj _build-tools 549169689Skan.if !defined(SUBDIR_OVERRIDE) 550169689SkanWMAKE_TGTS+= _cross-tools 551169689Skan.endif 552169689SkanWMAKE_TGTS+= _includes _libraries _depend everything 553169689Skan.if defined(LIB32TMP) && ${MK_LIB32} != "no" 554169689SkanWMAKE_TGTS+= build32 555169689Skan.endif 556169689Skan 557169689Skanbuildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue 558169689Skan.ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue 559169689Skan 560169689Skanbuildworld_prologue: 561169689Skan @echo "--------------------------------------------------------------" 562169689Skan @echo ">>> World build started on `LC_ALL=C date`" 563169689Skan @echo "--------------------------------------------------------------" 564169689Skan 565169689Skanbuildworld_epilogue: 566169689Skan @echo 567169689Skan @echo "--------------------------------------------------------------" 568169689Skan @echo ">>> World build completed on `LC_ALL=C date`" 569169689Skan @echo "--------------------------------------------------------------" 570169689Skan 571169689Skan# 572169689Skan# We need to have this as a target because the indirection between Makefile 573169689Skan# and Makefile.inc1 causes the correct PATH to be used, rather than a 574169689Skan# modification of the current environment's PATH. In addition, we need 575169689Skan# to quote multiword values. 576169689Skan# 577169689Skanbuildenvvars: 578169689Skan @echo ${WMAKEENV:Q} 579169689Skan 580169689Skanbuildenv: 581169689Skan @echo Entering world for ${TARGET_ARCH}:${TARGET} 582169689Skan @cd ${.CURDIR} && env ${WMAKEENV} ${BUILDENV_SHELL} || true 583169689Skan 584169689SkanTOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything:Nbuild32} 585169689Skantoolchain: ${TOOLCHAIN_TGTS} 586169689Skankernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} 587169689Skan 588169689Skan# 589169689Skan# installcheck 590169689Skan# 591169689Skan# Checks to be sure system is ready for installworld/installkernel. 592169689Skan# 593169689Skaninstallcheck: 594169689Skan 595169689Skan# 596169689Skan# Require DESTDIR to be set if installing for a different architecture. 597169689Skan# 598169689Skan.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} 599169689Skan.if !make(distributeworld) 600169689Skaninstallcheck: installcheck_DESTDIR 601169689Skaninstallcheck_DESTDIR: 602169689Skan.if !defined(DESTDIR) || empty(DESTDIR) 603169689Skan @echo "ERROR: Please set DESTDIR!"; \ 604169689Skan false 605169689Skan.endif 606169689Skan.endif 607169689Skan.endif 608169689Skan 609169689Skan# 610169689Skan# Check for missing UIDs/GIDs. 611169689Skan# 612169689SkanCHECK_UIDS= 613169689SkanCHECK_GIDS= audit 614169689Skan.if ${MK_SENDMAIL} != "no" 615169689SkanCHECK_UIDS+= smmsp 616169689SkanCHECK_GIDS+= smmsp 617169689Skan.endif 618169689Skan.if ${MK_PF} != "no" 619169689SkanCHECK_UIDS+= proxy 620169689SkanCHECK_GIDS+= proxy authpf 621169689Skan.endif 622169689Skaninstallcheck: installcheck_UGID 623169689Skaninstallcheck_UGID: 624169689Skan.for uid in ${CHECK_UIDS} 625169689Skan @if ! `id -u ${uid} >/dev/null 2>&1`; then \ 626169689Skan echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \ 627169689Skan false; \ 628169689Skan fi 629169689Skan.endfor 630169689Skan.for gid in ${CHECK_GIDS} 631169689Skan @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \ 632169689Skan echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \ 633169689Skan false; \ 634169689Skan fi 635169689Skan.endfor 636169689Skan 637169689Skan# 638169689Skan# Required install tools to be saved in a scratch dir for safety. 639169689Skan# 640169689Skan.if ${MK_INFO} != "no" 641169689Skan_install-info= install-info 642169689Skan.endif 643169689Skan.if ${MK_ZONEINFO} != "no" 644169689Skan_zoneinfo= zic tzsetup 645169689Skan.endif 646169689Skan 647169689SkanITOOLS= [ awk cap_mkdb cat chflags chmod chown \ 648169689Skan date echo egrep find grep ${_install-info} \ 649169689Skan ln lockf make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ 650169689Skan test true uname wc ${_zoneinfo} 651169689Skan 652169689Skan# 653169689Skan# distributeworld 654169689Skan# 655169689Skan# Distributes everything compiled by a `buildworld'. 656169689Skan# 657169689Skan# installworld 658169689Skan# 659169689Skan# Installs everything compiled by a 'buildworld'. 660169689Skan# 661169689Skan 662169689Skan# Non-base distributions produced by the base system 663169689SkanEXTRA_DISTRIBUTIONS= doc 664169689Skan.if ${MK_GAMES} != "no" 665169689SkanEXTRA_DISTRIBUTIONS+= games 666169689Skan.endif 667169689Skan.if defined(LIB32TMP) && ${MK_LIB32} != "no" 668169689SkanEXTRA_DISTRIBUTIONS+= lib32 669169689Skan.endif 670169689Skan 671169689Skandistributeworld installworld: installcheck 672169689Skan mkdir -p ${INSTALLTMP} 673169689Skan progs=$$(for prog in ${ITOOLS}; do \ 674169689Skan if progpath=`which $$prog`; then \ 675169689Skan echo $$progpath; \ 676169689Skan else \ 677169689Skan echo "Required tool $$prog not found in PATH." >&2; \ 678169689Skan exit 1; \ 679169689Skan fi; \ 680169689Skan done); \ 681169689Skan libs=$$(ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \ 682169689Skan while read line; do \ 683169689Skan set -- $$line; \ 684169689Skan if [ "$$2 $$3" != "not found" ]; then \ 685169689Skan echo $$2; \ 686169689Skan else \ 687169689Skan echo "Required library $$1 not found." >&2; \ 688169689Skan exit 1; \ 689169689Skan fi; \ 690169689Skan done); \ 691169689Skan cp $$libs $$progs ${INSTALLTMP} 692169689Skan cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale 693169689Skan.if make(distributeworld) 694169689Skan.for dist in ${EXTRA_DISTRIBUTIONS} 695169689Skan -mkdir ${DESTDIR}/${DISTDIR}/${dist} 696169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \ 697169689Skan -p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null 698169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ 699169689Skan -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null 700169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 701169689Skan -p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null 702169689Skan.endfor 703169689Skan -mkdir ${DESTDIR}/${DISTDIR}/base 704169689Skan ${_+_}cd ${.CURDIR}; ${IMAKE} distrib-dirs \ 705169689Skan DESTDIR=${DESTDIR}/${DISTDIR}/base 706169689Skan.endif 707169689Skan ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \ 708169689Skan ${IMAKEENV} rm -rf ${INSTALLTMP} 709169689Skan.if make(distributeworld) 710169689Skan.for dist in ${EXTRA_DISTRIBUTIONS} 711169689Skan find ${DESTDIR}/${DISTDIR}/${dist} -empty -delete 712169689Skan.endfor 713169689Skan.endif 714169689Skan 715169689Skanpackageworld: 716169689Skan.for dist in base ${EXTRA_DISTRIBUTIONS} 717169689Skan ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ 718169689Skan tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz . 719169689Skan.endfor 720169689Skan 721169689Skan# 722169689Skan# reinstall 723169689Skan# 724169689Skan# If you have a build server, you can NFS mount the source and obj directories 725169689Skan# and do a 'make reinstall' on the *client* to install new binaries from the 726169689Skan# most recent server build. 727169689Skan# 728169689Skanreinstall: 729169689Skan @echo "--------------------------------------------------------------" 730169689Skan @echo ">>> Making hierarchy" 731169689Skan @echo "--------------------------------------------------------------" 732169689Skan ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \ 733169689Skan LOCAL_MTREE=${LOCAL_MTREE} hierarchy 734169689Skan @echo 735169689Skan @echo "--------------------------------------------------------------" 736169689Skan @echo ">>> Installing everything" 737169689Skan @echo "--------------------------------------------------------------" 738169689Skan ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install 739169689Skan.if defined(LIB32TMP) && ${MK_LIB32} != "no" 740169689Skan ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 741169689Skan.endif 742169689Skan 743169689Skanredistribute: 744169689Skan @echo "--------------------------------------------------------------" 745169689Skan @echo ">>> Distributing everything" 746169689Skan @echo "--------------------------------------------------------------" 747169689Skan ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute 748169689Skan.if defined(LIB32TMP) && ${MK_LIB32} != "no" 749169689Skan ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 \ 750169689Skan DISTRIBUTION=lib32 751169689Skan.endif 752169689Skan 753169689Skandistrib-dirs distribution: 754169689Skan cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} ${.TARGET} 755169689Skan 756169689Skan# 757169689Skan# buildkernel and installkernel 758169689Skan# 759169689Skan# Which kernels to build and/or install is specified by setting 760169689Skan# KERNCONF. If not defined a GENERIC kernel is built/installed. 761169689Skan# Only the existing (depending TARGET) config files are used 762169689Skan# for building kernels and only the first of these is designated 763169689Skan# as the one being installed. 764169689Skan# 765169689Skan# Note that we have to use TARGET instead of TARGET_ARCH when 766169689Skan# we're in kernel-land. Since only TARGET_ARCH is (expected) to 767169689Skan# be set to cross-build, we have to make sure TARGET is set 768169689Skan# properly. 769169689Skan 770169689Skan.if defined(KERNFAST) 771169689SkanNO_KERNELCLEAN= t 772169689SkanNO_KERNELCONFIG= t 773169689SkanNO_KERNELDEPEND= t 774169689SkanNO_KERNELOBJ= t 775169689Skan# Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah 776169689Skan.if !defined(KERNCONF) && ${KERNFAST} != "1" 777169689SkanKERNCONF=${KERNFAST} 778169689Skan.endif 779169689Skan.endif 780169689Skan.if !defined(KERNCONF) && defined(KERNEL) 781169689SkanKERNCONF= ${KERNEL} 782169689SkanKERNWARN= 783169689Skan.else 784169689Skan.if ${TARGET_ARCH} == "powerpc64" 785169689SkanKERNCONF?= GENERIC64 786169689Skan.else 787169689SkanKERNCONF?= GENERIC 788169689Skan.endif 789169689Skan.endif 790169689SkanINSTKERNNAME?= kernel 791169689Skan 792169689SkanKERNSRCDIR?= ${.CURDIR}/sys 793169689SkanKRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf 794169689SkanKRNLOBJDIR= ${OBJTREE}${KERNSRCDIR} 795169689SkanKERNCONFDIR?= ${KRNLCONFDIR} 796169689Skan 797169689SkanBUILDKERNELS= 798169689SkanINSTALLKERNEL= 799169689Skan.for _kernel in ${KERNCONF} 800169689Skan.if exists(${KERNCONFDIR}/${_kernel}) 801169689SkanBUILDKERNELS+= ${_kernel} 802169689Skan.if empty(INSTALLKERNEL) 803169689SkanINSTALLKERNEL= ${_kernel} 804169689Skan.endif 805169689Skan.endif 806169689Skan.endfor 807169689Skan 808169689Skan# 809169689Skan# buildkernel 810169689Skan# 811169689Skan# Builds all kernels defined by BUILDKERNELS. 812169689Skan# 813169689Skanbuildkernel: 814169689Skan.if empty(BUILDKERNELS) 815169689Skan @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \ 816169689Skan false 817169689Skan.endif 818169689Skan.if defined(KERNWARN) 819169689Skan @echo "--------------------------------------------------------------" 820169689Skan @echo ">>> WARNING: KERNEL= setting should be changed to KERNCONF=" 821169689Skan @echo "--------------------------------------------------------------" 822169689Skan @sleep 3 823169689Skan.endif 824169689Skan @echo 825169689Skan.for _kernel in ${BUILDKERNELS} 826169689Skan @echo "--------------------------------------------------------------" 827169689Skan @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" 828169689Skan @echo "--------------------------------------------------------------" 829169689Skan @echo "===> ${_kernel}" 830169689Skan mkdir -p ${KRNLOBJDIR} 831169689Skan.if !defined(NO_KERNELCONFIG) 832169689Skan @echo 833169689Skan @echo "--------------------------------------------------------------" 834169689Skan @echo ">>> stage 1: configuring the kernel" 835169689Skan @echo "--------------------------------------------------------------" 836169689Skan cd ${KRNLCONFDIR}; \ 837169689Skan PATH=${TMPPATH} \ 838169689Skan config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ 839169689Skan ${KERNCONFDIR}/${_kernel} 840169689Skan.endif 841169689Skan.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) 842169689Skan @echo 843169689Skan @echo "--------------------------------------------------------------" 844169689Skan @echo ">>> stage 2.1: cleaning up the object tree" 845169689Skan @echo "--------------------------------------------------------------" 846169689Skan cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR} 847169689Skan.endif 848169689Skan.if !defined(NO_KERNELOBJ) 849169689Skan @echo 850169689Skan @echo "--------------------------------------------------------------" 851169689Skan @echo ">>> stage 2.2: rebuilding the object tree" 852169689Skan @echo "--------------------------------------------------------------" 853169689Skan cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj 854169689Skan.endif 855169689Skan @echo 856169689Skan @echo "--------------------------------------------------------------" 857169689Skan @echo ">>> stage 2.3: build tools" 858169689Skan @echo "--------------------------------------------------------------" 859169689Skan cd ${KRNLOBJDIR}/${_kernel}; \ 860169689Skan PATH=${BPATH}:${PATH} \ 861169689Skan MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ 862169689Skan ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -DEARLY_BUILD \ 863169689Skan -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile 864169689Skan# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case. 865169689Skan.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) 866169689Skan.for target in obj depend all 867169689Skan cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ 868169689Skan PATH=${BPATH}:${PATH} \ 869169689Skan MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ 870169689Skan ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -DEARLY_BUILD ${target} 871169689Skan.endfor 872169689Skan.endif 873169689Skan.if !defined(NO_KERNELDEPEND) 874169689Skan @echo 875169689Skan @echo "--------------------------------------------------------------" 876169689Skan @echo ">>> stage 3.1: making dependencies" 877169689Skan @echo "--------------------------------------------------------------" 878169689Skan cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} depend -DNO_MODULES_OBJ 879169689Skan.endif 880169689Skan @echo 881169689Skan @echo "--------------------------------------------------------------" 882169689Skan @echo ">>> stage 3.2: building everything" 883169689Skan @echo "--------------------------------------------------------------" 884169689Skan cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ 885169689Skan @echo "--------------------------------------------------------------" 886169689Skan @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`" 887169689Skan @echo "--------------------------------------------------------------" 888169689Skan.endfor 889169689Skan 890169689Skan# 891169689Skan# installkernel, etc. 892169689Skan# 893169689Skan# Install the kernel defined by INSTALLKERNEL 894169689Skan# 895169689Skaninstallkernel installkernel.debug \ 896169689Skanreinstallkernel reinstallkernel.debug: installcheck 897169689Skan.if empty(INSTALLKERNEL) 898169689Skan @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ 899169689Skan false 900169689Skan.endif 901169689Skan @echo "--------------------------------------------------------------" 902169689Skan @echo ">>> Installing kernel ${INSTALLKERNEL}" 903169689Skan @echo "--------------------------------------------------------------" 904169689Skan cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 905169689Skan ${CROSSENV} PATH=${TMPPATH} \ 906169689Skan ${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} 907169689Skan 908169689Skandistributekernel distributekernel.debug: 909169689Skan.if empty(INSTALLKERNEL) 910169689Skan @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ 911169689Skan false 912169689Skan.endif 913169689Skan cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ 914169689Skan ${CROSSENV} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \ 915169689Skan DESTDIR=${DESTDIR}/${DISTDIR}/kernel \ 916169689Skan ${.TARGET:S/distributekernel/install/} 917169689Skan.for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} 918169689Skan cd ${KRNLOBJDIR}/${_kernel}; \ 919169689Skan ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ 920169689Skan KERNEL=${INSTKERNNAME}.${_kernel} \ 921169689Skan DESTDIR=${DESTDIR}/${DISTDIR}/kernel.${_kernel} \ 922169689Skan ${.TARGET:S/distributekernel/install/} 923169689Skan.endfor 924169689Skan 925169689Skanpackagekernel: 926169689Skan cd ${DESTDIR}/${DISTDIR}/kernel; \ 927169689Skan tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz . 928169689Skan.for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} 929169689Skan cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ 930169689Skan tar cvJf ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz . 931169689Skan.endfor 932169689Skan 933169689Skan# 934169689Skan# doxygen 935169689Skan# 936169689Skan# Build the API documentation with doxygen 937169689Skan# 938169689Skandoxygen: 939169689Skan @if [ ! -x `/usr/bin/which doxygen` ]; then \ 940169689Skan echo "You need doxygen (devel/doxygen) to generate the API documentation of the kernel." | /usr/bin/fmt; \ 941169689Skan exit 1; \ 942169689Skan fi 943169689Skan cd ${.CURDIR}/tools/kerneldoc/subsys && ${MAKE} obj all 944169689Skan 945169689Skan# 946169689Skan# update 947169689Skan# 948169689Skan# Update the source tree(s), by running cvsup/cvs/svn to update to the 949169689Skan# latest copy. 950169689Skan# 951169689Skanupdate: 952169689Skan.if defined(SUP_UPDATE) 953169689Skan @echo "--------------------------------------------------------------" 954169689Skan @echo ">>> Running ${SUP}" 955169689Skan @echo "--------------------------------------------------------------" 956169689Skan.if defined(SUPFILE) 957169689Skan @${SUP} ${SUPFLAGS} ${SUPFILE} 958169689Skan.endif 959169689Skan.if defined(SUPFILE1) 960169689Skan @${SUP} ${SUPFLAGS} ${SUPFILE1} 961169689Skan.endif 962169689Skan.if defined(SUPFILE2) 963169689Skan @${SUP} ${SUPFLAGS} ${SUPFILE2} 964169689Skan.endif 965169689Skan.if defined(PORTSSUPFILE) && !defined(NO_PORTSUPDATE) 966169689Skan @${SUP} ${SUPFLAGS} ${PORTSSUPFILE} 967169689Skan.endif 968169689Skan.if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) 969169689Skan @${SUP} ${SUPFLAGS} ${DOCSUPFILE} 970169689Skan.endif 971169689Skan.if defined(WWWSUPFILE) && !defined(NO_WWWUPDATE) 972169689Skan @${SUP} ${SUPFLAGS} ${WWWSUPFILE} 973169689Skan.endif 974169689Skan.endif 975169689Skan.if defined(CVS_UPDATE) 976169689Skan @cd ${.CURDIR} ; \ 977169689Skan if [ -d CVS ] ; then \ 978169689Skan echo "--------------------------------------------------------------" ; \ 979169689Skan echo ">>> Updating ${.CURDIR} from CVS repository" ${CVSROOT} ; \ 980169689Skan echo "--------------------------------------------------------------" ; \ 981169689Skan echo ${CVS} -R -q update ${CVSFLAGS} ; \ 982169689Skan ${CVS} -R -q update ${CVSFLAGS} ; \ 983169689Skan fi 984169689Skan.endif 985169689Skan.if defined(SVN_UPDATE) 986169689Skan @cd ${.CURDIR} ; \ 987169689Skan if [ -d .svn ] ; then \ 988169689Skan echo "--------------------------------------------------------------" ; \ 989169689Skan echo ">>> Updating ${.CURDIR} using Subversion" ; \ 990169689Skan echo "--------------------------------------------------------------" ; \ 991169689Skan echo ${SVN} update ${SVNFLAGS} ; \ 992169689Skan ${SVN} update ${SVNFLAGS} ; \ 993169689Skan fi 994169689Skan.endif 995169689Skan 996169689Skan# 997169689Skan# ------------------------------------------------------------------------ 998169689Skan# 999169689Skan# From here onwards are utility targets used by the 'make world' and 1000169689Skan# related targets. If your 'world' breaks, you may like to try to fix 1001169689Skan# the problem and manually run the following targets to attempt to 1002169689Skan# complete the build. Beware, this is *not* guaranteed to work, you 1003169689Skan# need to have a pretty good grip on the current state of the system 1004169689Skan# to attempt to manually finish it. If in doubt, 'make world' again. 1005169689Skan# 1006169689Skan 1007169689Skan# 1008169689Skan# legacy: Build compatibility shims for the next three targets 1009169689Skan# 1010169689Skanlegacy: 1011169689Skan.if ${BOOTSTRAPPING} < 700055 && ${BOOTSTRAPPING} != 0 1012169689Skan @echo "ERROR: Source upgrades from versions prior to 7.0 not supported."; \ 1013169689Skan false 1014169689Skan.endif 1015169689Skan.for _tool in tools/build 1016169689Skan ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \ 1017169689Skan cd ${.CURDIR}/${_tool}; \ 1018169689Skan ${MAKE} DIRPRFX=${_tool}/ obj; \ 1019169689Skan ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \ 1020169689Skan ${MAKE} DIRPRFX=${_tool}/ depend; \ 1021169689Skan ${MAKE} DIRPRFX=${_tool}/ all; \ 1022169689Skan ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 1023169689Skan.endfor 1024169689Skan 1025169689Skan# 1026169689Skan# bootstrap-tools: Build tools needed for compatibility 1027169689Skan# 1028169689Skan.if ${MK_GAMES} != "no" 1029169689Skan_strfile= games/fortune/strfile 1030169689Skan.endif 1031169689Skan 1032169689Skan.if ${MK_CXX} != "no" 1033169689Skan_gperf= gnu/usr.bin/gperf 1034169689Skan.endif 1035169689Skan 1036169689Skan.if ${MK_GROFF} != "no" 1037169689Skan_groff= gnu/usr.bin/groff 1038169689Skan.endif 1039169689Skan 1040169689Skan.if ${BOOTSTRAPPING} < 800022 1041169689Skan_ar= usr.bin/ar 1042169689Skan.endif 1043169689Skan 1044169689Skan.if ${BOOTSTRAPPING} < 800013 1045169689Skan_mklocale= usr.bin/mklocale 1046169689Skan.endif 1047169689Skan 1048169689Skan.if ${BOOTSTRAPPING} < 900002 1049169689Skan_sed= usr.bin/sed 1050169689Skan.endif 1051169689Skan 1052169689Skan.if ${BOOTSTRAPPING} < 900006 1053169689Skan_lex= usr.bin/lex 1054169689Skan.endif 1055169689Skan 1056169689Skan.if ${BOOTSTRAPPING} < 1000013 1057169689Skan_yacc= usr.bin/yacc 1058169689Skan.endif 1059169689Skan 1060169689Skan.if ${BOOTSTRAPPING} >= 900040 && ${BOOTSTRAPPING} < 900041 1061169689Skan_awk= usr.bin/awk 1062169689Skan.endif 1063169689Skan 1064169689Skan.if ${MK_BSNMP} != "no" && !exists(/usr/sbin/gensnmptree) 1065169689Skan_gensnmptree= usr.sbin/bsnmpd/gensnmptree 1066169689Skan.endif 1067169689Skan 1068169689Skan.if ${MK_CLANG} != "no" 1069169689Skan_clang_tblgen= \ 1070169689Skan lib/clang/libllvmsupport \ 1071169689Skan lib/clang/libllvmtablegen \ 1072169689Skan usr.bin/clang/tblgen \ 1073169689Skan usr.bin/clang/clang-tblgen 1074169689Skan.endif 1075169689Skan 1076169689Skan# dtrace tools are required for older bootstrap env and cross-build 1077169689Skan.if ${MK_CDDL} != "no" && \ 1078169689Skan ((${BOOTSTRAPPING} < 800038 && \ 1079169689Skan !(${BOOTSTRAPPING} >= 700112 && ${BOOTSTRAPPING} < 799999)) \ 1080169689Skan || (${MACHINE} != ${TARGET} || ${MACHINE_ARCH} != ${TARGET_ARCH})) 1081169689Skan_dtrace_tools= cddl/usr.bin/sgsmsg cddl/lib/libctf lib/libelf \ 1082169689Skan lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge 1083169689Skan.endif 1084169689Skan 1085169689Skan.if ${MK_FDT} != "no" 1086169689Skan_dtc= gnu/usr.bin/dtc 1087169689Skan.endif 1088169689Skan 1089169689Skan.if ${MK_KERBEROS} != "no" 1090169689Skan_kerberos5_bootstrap_tools= \ 1091169689Skan kerberos5/tools/make-roken \ 1092169689Skan kerberos5/lib/libroken \ 1093169689Skan kerberos5/lib/libvers \ 1094169689Skan kerberos5/tools/asn1_compile \ 1095169689Skan kerberos5/tools/slc 1096169689Skan.endif 1097169689Skan 1098169689Skan# Please document (add comment) why something is in 'bootstrap-tools'. 1099169689Skan# Try to bound the building of the bootstrap-tool to just the 1100169689Skan# FreeBSD versions that need the tool built at this stage of the build. 1101169689Skanbootstrap-tools: 1102169689Skan.for _tool in \ 1103169689Skan ${_clang_tblgen} \ 1104169689Skan ${_kerberos5_bootstrap_tools} \ 1105169689Skan ${_dtrace_tools} \ 1106169689Skan ${_strfile} \ 1107169689Skan ${_gperf} \ 1108169689Skan ${_groff} \ 1109169689Skan ${_ar} \ 1110169689Skan ${_dtc} \ 1111169689Skan ${_awk} \ 1112169689Skan usr.bin/lorder \ 1113169689Skan usr.bin/makewhatis \ 1114169689Skan ${_mklocale} \ 1115169689Skan usr.bin/rpcgen \ 1116169689Skan ${_sed} \ 1117169689Skan ${_yacc} \ 1118169689Skan ${_lex} \ 1119169689Skan usr.bin/xinstall \ 1120169689Skan ${_gensnmptree} \ 1121169689Skan usr.sbin/config 1122169689Skan ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 1123169689Skan cd ${.CURDIR}/${_tool}; \ 1124169689Skan ${MAKE} DIRPRFX=${_tool}/ obj; \ 1125169689Skan ${MAKE} DIRPRFX=${_tool}/ depend; \ 1126169689Skan ${MAKE} DIRPRFX=${_tool}/ all; \ 1127169689Skan ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install 1128169689Skan.endfor 1129169689Skan 1130169689Skan# 1131169689Skan# build-tools: Build special purpose build tools 1132169689Skan# 1133169689Skan.if defined(MODULES_WITH_WORLD) && exists(${KERNSRCDIR}/modules) 1134169689Skan_aicasm= sys/modules/aic7xxx/aicasm 1135169689Skan.endif 1136169689Skan 1137169689Skan.if !defined(NO_SHARE) 1138169689Skan_share= share/syscons/scrnmaps 1139169689Skan.endif 1140169689Skan 1141169689Skan.if ${MK_GCC} != "no" 1142169689Skan_gcc_tools= gnu/usr.bin/cc/cc_tools 1143169689Skan.endif 1144169689Skan 1145169689Skan.if ${MK_RESCUE} != "no" 1146169689Skan_rescue= rescue/rescue 1147169689Skan.endif 1148169689Skan 1149169689Skanbuild-tools: 1150169689Skan.for _tool in \ 1151169689Skan bin/csh \ 1152169689Skan bin/sh \ 1153169689Skan ${_rescue} \ 1154169689Skan ${LOCAL_TOOL_DIRS} \ 1155169689Skan lib/ncurses/ncurses \ 1156169689Skan lib/ncurses/ncursesw \ 1157169689Skan ${_share} \ 1158169689Skan ${_aicasm} \ 1159169689Skan usr.bin/awk \ 1160169689Skan lib/libmagic \ 1161169689Skan usr.bin/mkesdb_static \ 1162169689Skan usr.bin/mkcsmapper_static 1163169689Skan ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ 1164169689Skan cd ${.CURDIR}/${_tool}; \ 1165169689Skan ${MAKE} DIRPRFX=${_tool}/ obj; \ 1166169689Skan ${MAKE} DIRPRFX=${_tool}/ build-tools 1167169689Skan.endfor 1168169689Skan.for _tool in \ 1169169689Skan ${_gcc_tools} 1170169689Skan ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \ 1171169689Skan cd ${.CURDIR}/${_tool}; \ 1172169689Skan ${MAKE} DIRPRFX=${_tool}/ obj; \ 1173169689Skan ${MAKE} DIRPRFX=${_tool}/ depend; \ 1174169689Skan ${MAKE} DIRPRFX=${_tool}/ all 1175169689Skan.endfor 1176169689Skan 1177169689Skan# 1178169689Skan# cross-tools: Build cross-building tools 1179169689Skan# 1180169689Skan.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 800035 1181169689Skan.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" 1182169689Skan_btxld= usr.sbin/btxld 1183169689Skan.endif 1184169689Skan.endif 1185169689Skan.if ${TARGET_ARCH} != ${MACHINE_ARCH} 1186169689Skan.if ${MK_RESCUE} != "no" || defined(RELEASEDIR) 1187169689Skan_crunchide= usr.sbin/crunch/crunchide 1188169689Skan.endif 1189169689Skan.if ${TARGET_ARCH} == "i386" && defined(RELEASEDIR) 1190169689Skan_kgzip= usr.sbin/kgzip 1191169689Skan.endif 1192169689Skan.endif 1193169689Skan 1194169689Skan.if ${MK_BINUTILS} != "no" 1195169689Skan_binutils= gnu/usr.bin/binutils 1196169689Skan.endif 1197169689Skan 1198169689Skan.if ${MK_CLANG} != "no" && (${MK_CLANG_IS_CC} != "no" || ${CC:T:Mclang} == "clang") 1199169689Skan_clang= usr.bin/clang 1200169689Skan_clang_libs= lib/clang 1201169689Skan.endif 1202169689Skan 1203169689Skan.if ${MK_GCC} != "no" && (${MK_CLANG_IS_CC} == "no" || ${TARGET} == "pc98") 1204169689Skan_cc= gnu/usr.bin/cc 1205169689Skan.endif 1206169689Skan 1207169689Skancross-tools: 1208169689Skan.for _tool in \ 1209169689Skan ${_clang_libs} \ 1210169689Skan ${_clang} \ 1211169689Skan ${_binutils} \ 1212169689Skan ${_cc} \ 1213169689Skan usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ 1214169689Skan ${_btxld} \ 1215169689Skan ${_crunchide} \ 1216169689Skan ${_kgzip} 1217169689Skan ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ 1218169689Skan cd ${.CURDIR}/${_tool}; \ 1219169689Skan ${MAKE} DIRPRFX=${_tool}/ obj; \ 1220169689Skan ${MAKE} DIRPRFX=${_tool}/ depend; \ 1221169689Skan ${MAKE} DIRPRFX=${_tool}/ all; \ 1222169689Skan ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install 1223169689Skan.endfor 1224169689Skan 1225169689Skan# 1226169689Skan# hierarchy - ensure that all the needed directories are present 1227169689Skan# 1228169689Skanhierarchy hier: 1229169689Skan cd ${.CURDIR}/etc; ${MAKE} distrib-dirs 1230169689Skan.for _mtree in ${LOCAL_MTREE} 1231169689Skan mtree -eU ${MTREE_FOLLOWS_SYMLINKS} -f ${.CURDIR}/${_mtree} \ 1232169689Skan -p ${DESTDIR}/ 1233169689Skan.endfor 1234169689Skan 1235169689Skan# 1236169689Skan# libraries - build all libraries, and install them under ${DESTDIR}. 1237169689Skan# 1238169689Skan# The list of libraries with dependents (${_prebuild_libs}) and their 1239169689Skan# interdependencies (__L) are built automatically by the 1240169689Skan# ${.CURDIR}/tools/make_libdeps.sh script. 1241169689Skan# 1242169689Skanlibraries: 1243169689Skan cd ${.CURDIR}; \ 1244169689Skan ${MAKE} -f Makefile.inc1 _prereq_libs; \ 1245169689Skan ${MAKE} -f Makefile.inc1 _startup_libs; \ 1246169689Skan ${MAKE} -f Makefile.inc1 _prebuild_libs; \ 1247169689Skan ${MAKE} -f Makefile.inc1 _generic_libs; 1248169689Skan 1249169689Skan# 1250169689Skan# static libgcc.a prerequisite for shared libc 1251169689Skan# 1252169689Skan_prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc lib/libcompiler_rt 1253169689Skan 1254169689Skan# These dependencies are not automatically generated: 1255169689Skan# 1256169689Skan# gnu/lib/csu, gnu/lib/libgcc, lib/csu and lib/libc must be built before 1257169689Skan# all shared libraries for ELF. 1258169689Skan# 1259169689Skan_startup_libs= gnu/lib/csu 1260169689Skan.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) 1261169689Skan_startup_libs+= lib/csu/${MACHINE_ARCH}-elf 1262169689Skan.elif exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) 1263169689Skan_startup_libs+= lib/csu/${MACHINE_ARCH} 1264169689Skan.else 1265169689Skan_startup_libs+= lib/csu/${MACHINE_CPUARCH} 1266169689Skan.endif 1267169689Skan_startup_libs+= gnu/lib/libgcc 1268169689Skan_startup_libs+= lib/libcompiler_rt 1269169689Skan_startup_libs+= lib/libc 1270169689Skan.if ${MK_LIBCPLUSPLUS} != "no" 1271169689Skan_startup_libs+= lib/libcxxrt 1272169689Skan.endif 1273169689Skan 1274169689Skangnu/lib/libgcc__L: lib/libc__L 1275169689Skan.if ${MK_LIBCPLUSPLUS} != "no" 1276169689Skanlib/libcxxrt__L: gnu/lib/libgcc__L 1277169689Skan.endif 1278169689Skan 1279169689Skan_prebuild_libs= ${_kerberos5_lib_libasn1} \ 1280169689Skan ${_kerberos5_lib_libhdb} \ 1281169689Skan ${_kerberos5_lib_libheimbase} \ 1282169689Skan ${_kerberos5_lib_libheimntlm} \ 1283169689Skan ${_kerberos5_lib_libheimsqlite} \ 1284169689Skan ${_kerberos5_lib_libheimipcc} \ 1285169689Skan ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \ 1286169689Skan ${_kerberos5_lib_libroken} \ 1287169689Skan ${_kerberos5_lib_libwind} \ 1288169689Skan ${_lib_atf_libatf_c} \ 1289169689Skan lib/libbz2 ${_libcom_err} lib/libcrypt \ 1290169689Skan lib/libexpat \ 1291169689Skan ${_lib_libgssapi} ${_lib_libipx} \ 1292169689Skan lib/libkiconv lib/libkvm lib/liblzma lib/libmd \ 1293169689Skan lib/ncurses/ncurses lib/ncurses/ncursesw \ 1294169689Skan lib/libopie lib/libpam ${_lib_libthr} \ 1295169689Skan lib/libradius lib/libsbuf lib/libtacplus \ 1296169689Skan ${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \ 1297169689Skan lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ 1298169689Skan ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ 1299169689Skan ${_secure_lib_libssl} 1300169689Skan 1301169689Skan.if ${MK_ATF} != "no" 1302169689Skan_lib_atf_libatf_c= lib/atf/libatf-c 1303169689Skan.endif 1304169689Skan 1305169689Skan.if ${MK_LIBTHR} != "no" 1306169689Skan_lib_libthr= lib/libthr 1307169689Skan.endif 1308169689Skan 1309169689Skan.if ${MK_OFED} != "no" 1310169689Skan_ofed_lib= contrib/ofed/usr.lib/ 1311169689Skan.endif 1312169689Skan 1313169689Skan_generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib} 1314169689Skan.for _DIR in ${LOCAL_LIB_DIRS} 1315169689Skan.if exists(${.CURDIR}/${_DIR}/Makefile) 1316169689Skan_generic_libs+= ${_DIR} 1317169689Skan.endif 1318169689Skan.endfor 1319169689Skan 1320169689Skanlib/libopie__L lib/libtacplus__L: lib/libmd__L 1321169689Skan 1322169689Skan.if ${MK_CDDL} != "no" 1323169689Skan_cddl_lib_libumem= cddl/lib/libumem 1324169689Skan_cddl_lib_libnvpair= cddl/lib/libnvpair 1325169689Skan_cddl_lib= cddl/lib 1326169689Skan.endif 1327169689Skan 1328169689Skan.if ${MK_CRYPT} != "no" 1329169689Skan.if ${MK_OPENSSL} != "no" 1330169689Skan_secure_lib_libcrypto= secure/lib/libcrypto 1331169689Skan_secure_lib_libssl= secure/lib/libssl 1332169689Skanlib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L 1333169689Skan.if ${MK_OPENSSH} != "no" 1334169689Skan_secure_lib_libssh= secure/lib/libssh 1335169689Skansecure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L 1336169689Skan.if ${MK_KERBEROS_SUPPORT} != "no" 1337169689Skansecure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ 1338169689Skan kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ 1339169689Skan lib/libmd__L kerberos5/lib/libroken__L 1340169689Skan.endif 1341169689Skan.endif 1342169689Skan.endif 1343169689Skan_secure_lib= secure/lib 1344169689Skan.endif 1345169689Skan 1346169689Skan.if ${MK_KERBEROS} != "no" 1347169689Skankerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L 1348169689Skankerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \ 1349169689Skan kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \ 1350169689Skan kerberos5/lib/libwind__L kerberos5/lib/libheimsqlite__L 1351169689Skankerberos5/lib/libheimntlm__L: secure/lib/libcrypto__L kerberos5/lib/libkrb5__L \ 1352169689Skan kerberos5/lib/libroken__L lib/libcom_err__L 1353169689Skankerberos5/lib/libhx509__L: kerberos5/lib/libasn1__L lib/libcom_err__L \ 1354169689Skan secure/lib/libcrypto__L kerberos5/lib/libroken__L kerberos5/lib/libwind__L 1355169689Skankerberos5/lib/libkrb5__L: kerberos5/lib/libasn1__L lib/libcom_err__L \ 1356169689Skan lib/libcrypt__L secure/lib/libcrypto__L kerberos5/lib/libhx509__L \ 1357169689Skan kerberos5/lib/libroken__L kerberos5/lib/libwind__L \ 1358169689Skan kerberos5/lib/libheimbase__L kerberos5/lib/libheimipcc__L 1359169689Skankerberos5/lib/libroken__L: lib/libcrypt__L 1360169689Skankerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L 1361169689Skankerberos5/lib/libheimbase__L: lib/libthr__L 1362169689Skankerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L 1363169689Skankerberos5/lib/libheimsqlite__L: lib/libthr__L 1364169689Skan.endif 1365169689Skan 1366169689Skan.if ${MK_GSSAPI} != "no" 1367169689Skan_lib_libgssapi= lib/libgssapi 1368169689Skan.endif 1369169689Skan 1370169689Skan.if ${MK_IPX} != "no" 1371169689Skan_lib_libipx= lib/libipx 1372169689Skan.endif 1373169689Skan 1374169689Skan.if ${MK_KERBEROS} != "no" 1375169689Skan_kerberos5_lib= kerberos5/lib 1376169689Skan_kerberos5_lib_libasn1= kerberos5/lib/libasn1 1377169689Skan_kerberos5_lib_libhdb= kerberos5/lib/libhdb 1378169689Skan_kerberos5_lib_libheimbase= kerberos5/lib/libheimbase 1379169689Skan_kerberos5_lib_libkrb5= kerberos5/lib/libkrb5 1380169689Skan_kerberos5_lib_libhx509= kerberos5/lib/libhx509 1381169689Skan_kerberos5_lib_libroken= kerberos5/lib/libroken 1382169689Skan_kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm 1383169689Skan_kerberos5_lib_libheimsqlite= kerberos5/lib/libheimsqlite 1384169689Skan_kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc 1385169689Skan_kerberos5_lib_libwind= kerberos5/lib/libwind 1386169689Skan_libcom_err= lib/libcom_err 1387169689Skan.endif 1388169689Skan 1389169689Skan.if ${MK_NIS} != "no" 1390169689Skan_lib_libypclnt= lib/libypclnt 1391169689Skan.endif 1392169689Skan 1393169689Skan.if ${MK_OPENSSL} == "no" 1394169689Skanlib/libradius__L: lib/libmd__L 1395169689Skan.endif 1396169689Skan 1397169689Skan.for _lib in ${_prereq_libs} 1398169689Skan${_lib}__PL: .PHONY 1399169689Skan.if exists(${.CURDIR}/${_lib}) 1400169689Skan ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ 1401169689Skan cd ${.CURDIR}/${_lib}; \ 1402169689Skan ${MAKE} DIRPRFX=${_lib}/ obj; \ 1403169689Skan ${MAKE} DIRPRFX=${_lib}/ depend; \ 1404169689Skan ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \ 1405169689Skan ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install 1406169689Skan.endif 1407169689Skan.endfor 1408169689Skan 1409169689Skan.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} 1410169689Skan${_lib}__L: .PHONY 1411169689Skan.if exists(${.CURDIR}/${_lib}) 1412169689Skan ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ 1413169689Skan cd ${.CURDIR}/${_lib}; \ 1414169689Skan ${MAKE} DIRPRFX=${_lib}/ obj; \ 1415169689Skan ${MAKE} DIRPRFX=${_lib}/ depend; \ 1416169689Skan ${MAKE} DIRPRFX=${_lib}/ all; \ 1417169689Skan ${MAKE} DIRPRFX=${_lib}/ install 1418169689Skan.endif 1419169689Skan.endfor 1420169689Skan 1421169689Skan# libpam is special: we need to build static PAM modules before 1422169689Skan# static PAM library, and dynamic PAM library before dynamic PAM 1423169689Skan# modules. 1424169689Skanlib/libpam__L: .PHONY 1425169689Skan ${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \ 1426169689Skan cd ${.CURDIR}/lib/libpam; \ 1427169689Skan ${MAKE} DIRPRFX=lib/libpam/ obj; \ 1428169689Skan ${MAKE} DIRPRFX=lib/libpam/ depend; \ 1429169689Skan ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ 1430169689Skan ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install 1431169689Skan 1432169689Skan_prereq_libs: ${_prereq_libs:S/$/__PL/} 1433169689Skan_startup_libs: ${_startup_libs:S/$/__L/} 1434169689Skan_prebuild_libs: ${_prebuild_libs:S/$/__L/} 1435169689Skan_generic_libs: ${_generic_libs:S/$/__L/} 1436169689Skan 1437169689Skan.for __target in all clean cleandepend cleandir depend includes obj 1438169689Skan.for entry in ${SUBDIR} 1439169689Skan${entry}.${__target}__D: .PHONY 1440169689Skan ${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ 1441169689Skan ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \ 1442169689Skan edir=${entry}.${MACHINE_ARCH}; \ 1443169689Skan cd ${.CURDIR}/$${edir}; \ 1444169689Skan else \ 1445169689Skan ${ECHODIR} "===> ${DIRPRFX}${entry} (${__target})"; \ 1446169689Skan edir=${entry}; \ 1447169689Skan cd ${.CURDIR}/$${edir}; \ 1448169689Skan fi; \ 1449169689Skan ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/ 1450169689Skan.endfor 1451169689Skanpar-${__target}: ${SUBDIR:S/$/.${__target}__D/} 1452169689Skan.endfor 1453169689Skan 1454169689Skan.include <bsd.subdir.mk> 1455169689Skan 1456169689Skan.if make(check-old) || make(check-old-dirs) || \ 1457169689Skan make(check-old-files) || make(check-old-libs) || \ 1458169689Skan make(delete-old) || make(delete-old-dirs) || \ 1459169689Skan make(delete-old-files) || make(delete-old-libs) 1460169689Skan 1461169689Skan# 1462169689Skan# check for / delete old files section 1463169689Skan# 1464169689Skan 1465169689Skan.include "ObsoleteFiles.inc" 1466169689Skan 1467169689SkanOLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \ 1468169689Skanelse you can not start such an application. Consult UPDATING for more \ 1469169689Skaninformation regarding how to cope with the removal/revision bump of a \ 1470169689Skanspecific library." 1471169689Skan 1472169689Skan.if !defined(BATCH_DELETE_OLD_FILES) 1473169689SkanRM_I=-i 1474169689Skan.else 1475169689SkanRM_I=-v 1476169689Skan.endif 1477169689Skan 1478169689Skandelete-old-files: 1479169689Skan @echo ">>> Removing old files (only deletes safe to delete libs)" 1480169689Skan# Ask for every old file if the user really wants to remove it. 1481169689Skan# It's annoying, but better safe than sorry. 1482169689Skan# NB: We cannot pass the list of OLD_FILES as a parameter because the 1483169689Skan# argument list will get too long. Using .for/.endfor make "loops" will make 1484169689Skan# the Makefile parser segfault. 1485169689Skan @exec 3<&0; \ 1486169689Skan ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1487169689Skan -V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \ 1488169689Skan while read file; do \ 1489169689Skan if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \ 1490169689Skan chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \ 1491169689Skan rm ${RM_I} "${DESTDIR}/$${file}" <&3; \ 1492169689Skan fi; \ 1493169689Skan done 1494169689Skan# Remove catpages without corresponding manpages. 1495169689Skan @exec 3<&0; \ 1496169689Skan find ${DESTDIR}/usr/share/man/cat* ! -type d | \ 1497169689Skan sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ 1498169689Skan while read catpage; do \ 1499169689Skan read manpage; \ 1500169689Skan if [ ! -e "$${manpage}" ]; then \ 1501169689Skan rm ${RM_I} $${catpage} <&3; \ 1502169689Skan fi; \ 1503169689Skan done 1504169689Skan @echo ">>> Old files removed" 1505169689Skan 1506169689Skancheck-old-files: 1507169689Skan @echo ">>> Checking for old files" 1508169689Skan @${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1509169689Skan -V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \ 1510169689Skan while read file; do \ 1511169689Skan if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \ 1512169689Skan echo "${DESTDIR}/$${file}"; \ 1513169689Skan fi; \ 1514169689Skan done 1515169689Skan# Check for catpages without corresponding manpages. 1516169689Skan @find ${DESTDIR}/usr/share/man/cat* ! -type d | \ 1517169689Skan sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ 1518169689Skan while read catpage; do \ 1519169689Skan read manpage; \ 1520169689Skan if [ ! -e "$${manpage}" ]; then \ 1521169689Skan echo $${catpage}; \ 1522169689Skan fi; \ 1523169689Skan done 1524169689Skan 1525169689Skandelete-old-libs: 1526169689Skan @echo ">>> Removing old libraries" 1527169689Skan @echo "${OLD_LIBS_MESSAGE}" | fmt 1528169689Skan @exec 3<&0; \ 1529169689Skan ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1530169689Skan -V OLD_LIBS | xargs -n1 | \ 1531169689Skan while read file; do \ 1532169689Skan if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \ 1533169689Skan chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \ 1534169689Skan rm ${RM_I} "${DESTDIR}/$${file}" <&3; \ 1535169689Skan fi; \ 1536169689Skan done 1537169689Skan @echo ">>> Old libraries removed" 1538169689Skan 1539169689Skancheck-old-libs: 1540169689Skan @echo ">>> Checking for old libraries" 1541169689Skan @${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1542169689Skan -V OLD_LIBS | xargs -n1 | \ 1543169689Skan while read file; do \ 1544169689Skan if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \ 1545169689Skan echo "${DESTDIR}/$${file}"; \ 1546169689Skan fi; \ 1547169689Skan done 1548169689Skan 1549169689Skandelete-old-dirs: 1550169689Skan @echo ">>> Removing old directories" 1551169689Skan @${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1552169689Skan -V OLD_DIRS | xargs -n1 | \ 1553169689Skan while read dir; do \ 1554169689Skan if [ -d "${DESTDIR}/$${dir}" ]; then \ 1555169689Skan rmdir -v "${DESTDIR}/$${dir}" || true; \ 1556169689Skan elif [ -L "${DESTDIR}/$${dir}" ]; then \ 1557169689Skan echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \ 1558169689Skan fi; \ 1559169689Skan done 1560169689Skan @echo ">>> Old directories removed" 1561169689Skan 1562169689Skancheck-old-dirs: 1563169689Skan @echo ">>> Checking for old directories" 1564169689Skan @${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \ 1565169689Skan -V OLD_DIRS | xargs -n1 | \ 1566169689Skan while read dir; do \ 1567169689Skan if [ -d "${DESTDIR}/$${dir}" ]; then \ 1568169689Skan echo "${DESTDIR}/$${dir}"; \ 1569169689Skan elif [ -L "${DESTDIR}/$${dir}" ]; then \ 1570169689Skan echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \ 1571169689Skan fi; \ 1572169689Skan done 1573169689Skan 1574169689Skandelete-old: delete-old-files delete-old-dirs 1575169689Skan @echo "To remove old libraries run '${MAKE} delete-old-libs'." 1576169689Skan 1577169689Skancheck-old: check-old-files check-old-libs check-old-dirs 1578169689Skan @echo "To remove old files and directories run '${MAKE} delete-old'." 1579169689Skan @echo "To remove old libraries run '${MAKE} delete-old-libs'." 1580169689Skan 1581169689Skan.endif 1582169689Skan 1583169689Skan# 1584169689Skan# showconfig - show build configuration. 1585169689Skan# 1586169689Skanshowconfig: 1587169689Skan @${MAKE} -n -f bsd.own.mk -V dummy -dg1 2>&1 | grep ^MK_ | sort 1588169689Skan 1589169689Skan.if !empty(KRNLOBJDIR) && !empty(KERNCONF) 1590169689SkanDTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/ 1591169689Skan 1592169689Skan.if !defined(FDT_DTS_FILE) || empty(FDT_DTS_FILE) 1593169689Skan.if exists(${KERNCONFDIR}/${KERNCONF}) 1594169689SkanFDT_DTS_FILE!= awk 'BEGIN {FS="="} /^makeoptions[[:space:]]+FDT_DTS_FILE/ {print $$2}' \ 1595169689Skan ${KERNCONFDIR}/${KERNCONF} ; echo 1596169689Skan.endif 1597169689Skan.endif 1598169689Skan 1599169689Skan.endif 1600169689Skan 1601169689Skan.if !defined(DTBOUTPUTPATH) || !exists(${DTBOUTPUTPATH}) 1602169689SkanDTBOUTPUTPATH= ${.CURDIR} 1603169689Skan.endif 1604169689Skan 1605169689Skan# 1606169689Skan# Build 'standalone' Device Tree Blob 1607169689Skan# 1608169689Skanbuilddtb: 1609169689Skan @if [ "${FDT_DTS_FILE}" = "" ]; then \ 1610169689Skan echo "ERROR: FDT_DTS_FILE must be specified!"; \ 1611169689Skan exit 1; \ 1612169689Skan fi; \ 1613169689Skan if [ ! -f ${.CURDIR}/sys/boot/fdt/dts/${FDT_DTS_FILE} ]; then \ 1614169689Skan echo "ERROR: Specified DTS file (${FDT_DTS_FILE}) does not \ 1615169689Skan exist!"; \ 1616169689Skan exit 1; \ 1617169689Skan fi; \ 1618169689Skan if [ "${DTBOUTPUTPATH}" = "${.CURDIR}" ]; then \ 1619169689Skan echo "WARNING: DTB will be placed in the current working \ 1620169689Skan directory"; \ 1621169689Skan fi 1622169689Skan @PATH=${TMPPATH} \ 1623169689Skan dtc -O dtb -o \ 1624169689Skan ${DTBOUTPUTPATH}/`echo ${FDT_DTS_FILE} | cut -d. -f1`.dtb -b 0 \ 1625169689Skan -p 1024 ${.CURDIR}/sys/boot/fdt/dts/${FDT_DTS_FILE} 1626169689Skan 1627169689Skan############### 1628169689Skan 1629169689Skan.if defined(XDEV) && defined(XDEV_ARCH) 1630169689Skan 1631169689Skan.if ${XDEV} == ${MACHINE} && ${XDEV_ARCH} == ${MACHINE_ARCH} 1632169689SkanXDEV_CPUTYPE?=${CPUTYPE} 1633169689Skan.else 1634169689SkanXDEV_CPUTYPE?=${TARGET_CPUTYPE} 1635169689Skan.endif 1636169689Skan 1637169689SkanNOFUN=-DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \ 1638169689Skan -DWITHOUT_MAN -DWITHOUT_NLS -DNO_PROFILE \ 1639169689Skan -DWITHOUT_KERBEROS -DWITHOUT_RESCUE -DNO_WARNS \ 1640169689Skan TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \ 1641169689Skan CPUTYPE=${XDEV_CPUTYPE} 1642169689Skan 1643169689SkanXDDIR=${XDEV_ARCH}-freebsd 1644169689SkanXDTP=/usr/${XDDIR} 1645169689SkanCDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} 1646169689SkanCDENV= ${CDBENV} \ 1647169689Skan _SHLIBDIRPREFIX=${XDTP} \ 1648169689Skan TOOLS_PREFIX=${XDTP} 1649169689SkanCD2ENV=${CDENV} \ 1650169689Skan MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH} 1651169689Skan 1652169689SkanCDTMP= ${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp 1653169689SkanCDMAKE=${CDENV} ${MAKE} ${NOFUN} 1654169689SkanCD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN} 1655169689SkanXDDESTDIR=${DESTDIR}${XDTP} 1656169689Skan.if !defined(OSREL) 1657169689SkanOSREL!= uname -r | sed -e 's/[-(].*//' 1658169689Skan.endif 1659169689Skan 1660169689Skan.ORDER: xdev-build xdev-install 1661169689Skanxdev: xdev-build xdev-install 1662169689Skan 1663169689Skan.ORDER: _xb-build-tools _xb-cross-tools 1664169689Skanxdev-build: _xb-build-tools _xb-cross-tools 1665169689Skan 1666169689Skan_xb-build-tools: 1667169689Skan ${_+_}@cd ${.CURDIR}; \ 1668169689Skan ${CDBENV} ${MAKE} -f Makefile.inc1 ${NOFUN} build-tools 1669169689Skan 1670169689Skan_xb-cross-tools: 1671169689Skan.for _tool in \ 1672169689Skan gnu/usr.bin/binutils \ 1673169689Skan gnu/usr.bin/cc \ 1674169689Skan usr.bin/ar 1675169689Skan ${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \ 1676169689Skan cd ${.CURDIR}/${_tool}; \ 1677169689Skan ${CDMAKE} DIRPRFX=${_tool}/ obj; \ 1678169689Skan ${CDMAKE} DIRPRFX=${_tool}/ depend; \ 1679169689Skan ${CDMAKE} DIRPRFX=${_tool}/ all 1680169689Skan.endfor 1681169689Skan 1682169689Skan_xi-mtree: 1683169689Skan ${_+_}@${ECHODIR} "mtree populating ${XDDESTDIR}" 1684169689Skan mkdir -p ${XDDESTDIR} 1685169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \ 1686169689Skan -p ${XDDESTDIR} >/dev/null 1687169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ 1688169689Skan -p ${XDDESTDIR}/usr >/dev/null 1689169689Skan mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ 1690169689Skan -p ${XDDESTDIR}/usr/include >/dev/null 1691169689Skan 1692169689Skan.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links 1693169689Skanxdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links 1694169689Skan 1695169689Skan_xi-cross-tools: 1696169689Skan @echo "_xi-cross-tools" 1697169689Skan.for _tool in \ 1698169689Skan gnu/usr.bin/binutils \ 1699169689Skan gnu/usr.bin/cc \ 1700169689Skan usr.bin/ar 1701169689Skan ${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \ 1702169689Skan cd ${.CURDIR}/${_tool}; \ 1703169689Skan ${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR} 1704169689Skan.endfor 1705169689Skan 1706169689Skan_xi-includes: 1707169689Skan ${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 par-includes \ 1708169689Skan DESTDIR=${XDDESTDIR} 1709169689Skan 1710169689Skan_xi-libraries: 1711169689Skan ${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \ 1712169689Skan DESTDIR=${XDDESTDIR} 1713169689Skan 1714169689Skan_xi-links: 1715169689Skan ${_+_}cd ${XDDESTDIR}/usr/bin; \ 1716169689Skan for i in *; do \ 1717169689Skan ln -sf ../../${XDTP}/usr/bin/$$i \ 1718169689Skan ../../../../usr/bin/${XDDIR}-$$i; \ 1719169689Skan ln -sf ../../${XDTP}/usr/bin/$$i \ 1720169689Skan ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \ 1721169689Skan done 1722169689Skan.else 1723169689Skanxdev xdev-buil xdev-install: 1724169689Skan @echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target" 1725169689Skan.endif 1726169689Skan