Makefile revision 219177
118334Speter# 218334Speter# $FreeBSD: head/Makefile 219177 2011-03-02 14:39:26Z nwhitehorn $ 390075Sobrien# 496263Sobrien# The user-driven targets are: 518334Speter# 690075Sobrien# universe - *Really* build *everything* (buildworld and 718334Speter# all kernels on all architectures). 890075Sobrien# tinderbox - Same as universe, but presents a list of failed build 990075Sobrien# targets and exits with an error if there were any. 1090075Sobrien# buildworld - Rebuild *everything*, including glue to help do 1190075Sobrien# upgrades. 1218334Speter# installworld - Install everything built by "buildworld". 1390075Sobrien# world - buildworld + installworld, no kernel. 1490075Sobrien# buildkernel - Rebuild the kernel and the kernel-modules. 1590075Sobrien# installkernel - Install the kernel and the kernel-modules. 1690075Sobrien# installkernel.debug 1718334Speter# reinstallkernel - Reinstall the kernel and the kernel-modules. 1818334Speter# reinstallkernel.debug 1990075Sobrien# kernel - buildkernel + installkernel. 2090075Sobrien# kernel-toolchain - Builds the subset of world necessary to build a kernel 2190075Sobrien# doxygen - Build API documentation of the kernel, needs doxygen. 2218334Speter# update - Convenient way to update your source tree (cvs). 2390075Sobrien# check-old - List obsolete directories/files/libraries. 2490075Sobrien# check-old-dirs - List obsolete directories. 2590075Sobrien# check-old-files - List obsolete files. 2618334Speter# check-old-libs - List obsolete libraries. 2790075Sobrien# delete-old - Delete obsolete directories/files/libraries. 2818334Speter# delete-old-dirs - Delete obsolete directories. 2918334Speter# delete-old-files - Delete obsolete files. 3018334Speter# delete-old-libs - Delete obsolete libraries. 3190075Sobrien# targets - Print a list of supported TARGET/TARGET_ARCH pairs 3218334Speter# for world and kernel targets. 3318334Speter# toolchains - Build a toolchain for all world and kernel targets. 3418334Speter# 3590075Sobrien# This makefile is simple by design. The FreeBSD make automatically reads 3618334Speter# the /usr/share/mk/sys.mk unless the -m argument is specified on the 3718334Speter# command line. By keeping this makefile simple, it doesn't matter too 3818334Speter# much how different the installed mk files are from those in the source 3990075Sobrien# tree. This makefile executes a child make process, forcing it to use 4018334Speter# the mk files from the source tree which are supposed to DTRT. 4190075Sobrien# 4218334Speter# Most of the user-driven targets (as listed above) are implemented in 4318334Speter# Makefile.inc1. The exceptions are universe, tinderbox and targets. 4490075Sobrien# 4518334Speter# If you want to build your system from source be sure that /usr/obj has 4618334Speter# at least 1GB of diskspace available. A complete 'universe' build requires 4790075Sobrien# about 15GB of space. 4818334Speter# 4918334Speter# For individuals wanting to build from the sources currently on their 5018334Speter# system, the simple instructions are: 5118334Speter# 5290075Sobrien# 1. `cd /usr/src' (or to the directory containing your source tree). 5318334Speter# 2. Define `HISTORICAL_MAKE_WORLD' variable (see README). 5418334Speter# 3. `make world' 5518334Speter# 5690075Sobrien# For individuals wanting to upgrade their sources (even if only a 5718334Speter# delta of a few days): 5818334Speter# 5918334Speter# 1. `cd /usr/src' (or to the directory containing your source tree). 6018334Speter# 2. `make buildworld' 6118334Speter# 3. `make buildkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). 6218334Speter# 4. `make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). 6390075Sobrien# [steps 3. & 4. can be combined by using the "kernel" target] 6418334Speter# 5. `reboot' (in single user mode: boot -s from the loader prompt). 6518334Speter# 6. `mergemaster -p' 6618334Speter# 7. `make installworld' 6718334Speter# 8. `make delete-old' 6890075Sobrien# 9. `mergemaster' (you may wish to use -U or -ai). 6918334Speter# 10. `reboot' 7018334Speter# 11. `make delete-old-libs' (in case no 3rd party program uses them anymore) 7190075Sobrien# 7218334Speter# See src/UPDATING `COMMON ITEMS' for more complete information. 7318334Speter# 7418334Speter# If TARGET=machine (e.g. ia64, sparc64, ...) is specified you can 7518334Speter# cross build world for other machine types using the buildworld target, 7690075Sobrien# and once the world is built you can cross build a kernel using the 7718334Speter# buildkernel target. 7818334Speter# 7918334Speter# Define the user-driven targets. These are listed here in alphabetical 8090075Sobrien# order, but that's not important. 8118334Speter# 8218334Speter# Targets that begin with underscore are internal targets intended for 8318334Speter# developer convenience only. They are intentionally not documented and 8496263Sobrien# completely subject to change without notice. 8518334Speter# 8618334Speter# For more information, see the build(7) manual page. 8718334Speter# 8890075SobrienTGTS= all all-man buildenv buildenvvars buildkernel buildworld \ 8918334Speter check-old check-old-dirs check-old-files check-old-libs \ 9050397Sobrien checkdpadd clean cleandepend cleandir \ 9150397Sobrien delete-old delete-old-dirs delete-old-files delete-old-libs \ 9250397Sobrien depend distribute distributekernel distributekernel.debug \ 9390075Sobrien distributeworld distrib-dirs distribution doxygen \ 9450397Sobrien everything hierarchy install installcheck installkernel \ 9552284Sobrien installkernel.debug packagekernel packageworld \ 9652284Sobrien reinstallkernel reinstallkernel.debug \ 9790075Sobrien installworld kernel-toolchain libraries lint maninstall \ 9852284Sobrien obj objlink regress rerelease showconfig tags toolchain update \ 9918334Speter _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ 10090075Sobrien _build-tools _cross-tools _includes _libraries _depend \ 10118334Speter build32 builddtb distribute32 install32 xdev xdev-build xdev-install \ 10218334Speter 10318334SpeterTGTS+= ${SUBDIR_TARGETS} 10490075Sobrien 10518334SpeterBITGTS= files includes 10618334SpeterBITGTS:=${BITGTS} ${BITGTS:S/^/build/} ${BITGTS:S/^/install/} 10718334SpeterTGTS+= ${BITGTS} 10818334Speter 10990075Sobrien.ORDER: buildworld installworld 11018334Speter.ORDER: buildworld distributeworld 11118334Speter.ORDER: buildworld buildkernel 11218334Speter.ORDER: buildkernel installkernel 11390075Sobrien.ORDER: buildkernel installkernel.debug 11418334Speter.ORDER: buildkernel reinstallkernel 11518334Speter.ORDER: buildkernel reinstallkernel.debug 11618334Speter 11790075SobrienPATH= /sbin:/bin:/usr/sbin:/usr/bin 11818334SpeterMAKEOBJDIRPREFIX?= /usr/obj 11918334Speter_MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} \ 12090075Sobrien ${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} __MAKE_CONF=${__MAKE_CONF} \ 12118334Speter -f /dev/null -V MAKEOBJDIRPREFIX dummy 12290075Sobrien.if !empty(_MAKEOBJDIRPREFIX) 12390075Sobrien.error MAKEOBJDIRPREFIX can only be set in environment, not as a global\ 12490075Sobrien (in make.conf(5)) or command-line variable. 12590075Sobrien.endif 12690075SobrienMAKEPATH= ${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE} 12718334SpeterBINMAKE= \ 12818334Speter `if [ -x ${MAKEPATH}/make ]; then echo ${MAKEPATH}/make; else echo ${MAKE}; fi` \ 12990075Sobrien -m ${.CURDIR}/share/mk 13018334Speter_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} 13118334Speter 13218334Speter# Guess machine architecture from machine type, and vice versa. 13390075Sobrien.if !defined(TARGET_ARCH) && defined(TARGET) 13450397Sobrien_TARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/} 13590075Sobrien.elif !defined(TARGET) && defined(TARGET_ARCH) && \ 13690075Sobrien ${TARGET_ARCH} != ${MACHINE_ARCH} 13790075Sobrien_TARGET= ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/} 13890075Sobrien.endif 13990075Sobrien# Legacy names, for a transition period mips:mips -> mipsel:mips 14090075Sobrien.if defined(TARGET) && defined(TARGET_ARCH) && \ 14190075Sobrien ${TARGET_ARCH} == "mips" && ${TARGET} == "mips" 14250397Sobrien.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or mipseb" 14390075Sobrien.if defined(TARGET_BIG_ENDIAN) 14490075Sobrien_TARGET_ARCH=mipseb 14590075Sobrien.else 14690075Sobrien_TARGET_ARCH=mipsel 14790075Sobrien.endif 14890075Sobrien.endif 14918334Speter# arm with TARGET_BIG_ENDIAN -> armeb 15018334Speter.if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN) 15118334Speter.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated. use armeb" 15218334Speter_TARGET_ARCH=armeb 15318334Speter.endif 15490075Sobrien.if defined(TARGET) && !defined(_TARGET) 15518334Speter_TARGET=${TARGET} 15618334Speter.endif 15790075Sobrien.if defined(TARGET_ARCH) && !defined(_TARGET_ARCH) 15818334Speter_TARGET_ARCH=${TARGET_ARCH} 15952284Sobrien.endif 16090075Sobrien# Otherwise, default to current machine type and architecture. 16152284Sobrien_TARGET?= ${MACHINE} 16218334Speter_TARGET_ARCH?= ${MACHINE_ARCH} 16318334Speter 16490075Sobrien# 16518334Speter# Make sure we have an up-to-date make(1). Only world and buildworld 16690075Sobrien# should do this as those are the initial targets used for upgrades. 16790075Sobrien# The user can define ALWAYS_CHECK_MAKE to have this check performed 16818334Speter# for all targets. 16990075Sobrien# 17090075Sobrien.if defined(ALWAYS_CHECK_MAKE) 17150397Sobrien${TGTS}: upgrade_checks 17250397Sobrien.else 17390075Sobrienbuildworld: upgrade_checks 17490075Sobrien.endif 17590075Sobrien 17690075Sobrien# 17790075Sobrien# This 'cleanworld' target is not included in TGTS, because it is not a 17890075Sobrien# recursive target. All of the work for it is done right here. It is 17990075Sobrien# expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be 18090075Sobrien# created by bsd.obj.mk, except that we don't want to .include that file 18190075Sobrien# in this makefile. 18290075Sobrien# 18390075Sobrien# In the following, the first 'rm' in a series will usually remove all 18490075Sobrien# files and directories. If it does not, then there are probably some 18590075Sobrien# files with chflags set, so this unsets them and tries the 'rm' a 18690075Sobrien# second time. There are situations where this target will be cleaning 18790075Sobrien# some directories via more than one method, but that duplication is 18890075Sobrien# needed to correctly handle all the possible situations. 18990075Sobrien# 19090075SobrienBW_CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR} 19190075Sobriencleanworld: 19290075Sobrien.if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR} 19390075Sobrien.if exists(${BW_CANONICALOBJDIR}/) 19490075Sobrien -rm -rf ${BW_CANONICALOBJDIR}/* 19590075Sobrien -chflags -R 0 ${BW_CANONICALOBJDIR} 19690075Sobrien rm -rf ${BW_CANONICALOBJDIR}/* 19790075Sobrien.endif 19890075Sobrien # To be safe in this case, fall back to a 'make cleandir' 19990075Sobrien ${_+_}@cd ${.CURDIR}; ${_MAKE} cleandir 20090075Sobrien.else 20190075Sobrien -rm -rf ${.OBJDIR}/* 20290075Sobrien -chflags -R 0 ${.OBJDIR} 20390075Sobrien rm -rf ${.OBJDIR}/* 20490075Sobrien.endif 20590075Sobrien 20690075Sobrien# 20790075Sobrien# Handle the user-driven targets, using the source relative mk files. 20890075Sobrien# 20990075Sobrien 21090075Sobrien${TGTS}: 21190075Sobrien ${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET} 21290075Sobrien 21318334Speter# Set a reasonable default 21418334Speter.MAIN: all 21518334Speter 21650397SobrienSTARTTIME!= LC_ALL=C date 21750397SobrienCHECK_TIME!= find ${.CURDIR}/sys/sys/param.h -mtime -0 21890075Sobrien.if !empty(CHECK_TIME) 21918334Speter.error check your date/time: ${STARTTIME} 22018334Speter.endif 22190075Sobrien 22218334Speter.if defined(HISTORICAL_MAKE_WORLD) || defined(DESTDIR) 22390075Sobrien# 22490075Sobrien# world 22590075Sobrien# 22650397Sobrien# Attempt to rebuild and reinstall everything. This target is not to be 22790075Sobrien# used for upgrading an existing FreeBSD system, because the kernel is 22890075Sobrien# not included. One can argue that this target doesn't build everything 22990075Sobrien# then. 23090075Sobrien# 23118334Speterworld: upgrade_checks 23250397Sobrien @echo "--------------------------------------------------------------" 23390075Sobrien @echo ">>> make world started on ${STARTTIME}" 23496263Sobrien @echo "--------------------------------------------------------------" 23596263Sobrien.if target(pre-world) 23650397Sobrien @echo 23750397Sobrien @echo "--------------------------------------------------------------" 23850397Sobrien @echo ">>> Making 'pre-world' target" 23990075Sobrien @echo "--------------------------------------------------------------" 24050397Sobrien ${_+_}@cd ${.CURDIR}; ${_MAKE} pre-world 24118334Speter.endif 24218334Speter ${_+_}@cd ${.CURDIR}; ${_MAKE} buildworld 24318334Speter ${_+_}@cd ${.CURDIR}; ${_MAKE} -B installworld 24418334Speter.if target(post-world) 24518334Speter @echo 24618334Speter @echo "--------------------------------------------------------------" 24718334Speter @echo ">>> Making 'post-world' target" 24890075Sobrien @echo "--------------------------------------------------------------" 24918334Speter ${_+_}@cd ${.CURDIR}; ${_MAKE} post-world 25050397Sobrien.endif 25118334Speter @echo 25218334Speter @echo "--------------------------------------------------------------" 25390075Sobrien @echo ">>> make world completed on `LC_ALL=C date`" 25418334Speter @echo " (started ${STARTTIME})" 25518334Speter @echo "--------------------------------------------------------------" 25690075Sobrien.else 25718334Speterworld: 25890075Sobrien @echo "WARNING: make world will overwrite your existing FreeBSD" 25950397Sobrien @echo "installation without also building and installing a new" 26018334Speter @echo "kernel. This can be dangerous. Please read the handbook," 26118334Speter @echo "'Rebuilding world', for how to upgrade your system." 26290075Sobrien @echo "Define DESTDIR to where you want to install FreeBSD," 26318334Speter @echo "including /, to override this warning and proceed as usual." 26418334Speter @echo "" 26518334Speter @echo "Bailing out now..." 26618334Speter @false 26718334Speter.endif 26890075Sobrien 26918334Speter# 27018334Speter# kernel 27118334Speter# 27290075Sobrien# Short hand for `make buildkernel installkernel' 27318334Speter# 27418334Speterkernel: buildkernel installkernel 27518334Speter 27618334Speter# 27718334Speter# Perform a few tests to determine if the installed tools are adequate 27818334Speter# for building the world. 27918334Speter# 28018334Speterupgrade_checks: 28118334Speter @if ! (cd ${.CURDIR}/tools/build/make_check && \ 28218334Speter PATH=${PATH} ${BINMAKE} obj >/dev/null 2>&1 && \ 28390075Sobrien PATH=${PATH} ${BINMAKE} >/dev/null 2>&1); \ 28418334Speter then \ 28518334Speter (cd ${.CURDIR} && ${MAKE} make); \ 28618334Speter fi 28718334Speter 28890075Sobrien# 28950397Sobrien# Upgrade make(1) to the current version using the installed 29018334Speter# headers, libraries and tools. Also, allow the location of 29190075Sobrien# the system bsdmake-like utility to be overridden. 29290075Sobrien# 29390075SobrienMMAKEENV= MAKEOBJDIRPREFIX=${MAKEPATH} \ 29490075Sobrien DESTDIR= \ 29590075Sobrien INSTALL="sh ${.CURDIR}/tools/install.sh" 29690075SobrienMMAKE= ${MMAKEENV} ${MAKE} \ 29790075Sobrien -D_UPGRADING \ 29890075Sobrien -DNOMAN -DNO_MAN -DNOSHARED -DNO_SHARED \ 29990075Sobrien -DNO_CPU_CFLAGS -DNO_WERROR 30090075Sobrien 30118334Spetermake: .PHONY 30218334Speter @echo 30390075Sobrien @echo "--------------------------------------------------------------" 30418334Speter @echo ">>> Building an up-to-date make(1)" 30518334Speter @echo "--------------------------------------------------------------" 30618334Speter ${_+_}@cd ${.CURDIR}/usr.bin/make; \ 30790075Sobrien ${MMAKE} obj && \ 30818334Speter ${MMAKE} depend && \ 30918334Speter ${MMAKE} all && \ 31090075Sobrien ${MMAKE} install DESTDIR=${MAKEPATH} BINDIR= 31190075Sobrien 31218334Spetertinderbox: 31318334Speter @cd ${.CURDIR} && ${MAKE} DOING_TINDERBOX=YES universe 31418334Speter 31518334Spetertoolchains: 31618334Speter @cd ${.CURDIR} && ${MAKE} UNIVERSE_TARGET=toolchain universe 31718334Speter 31890075Sobrien# 31918334Speter# universe 32090075Sobrien# 32190075Sobrien# Attempt to rebuild *everything* for all supported architectures, 32290075Sobrien# with a reasonable chance of success, regardless of how old your 32390075Sobrien# existing system is. 32490075Sobrien# 32590075Sobrien.if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) 32690075SobrienTARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 sun4v 32790075SobrienTARGET_ARCHES_arm?= arm armeb 32890075SobrienTARGET_ARCHES_mips?= mipsel mipseb mips64el mips64eb 32918334SpeterTARGET_ARCHES_powerpc?= powerpc powerpc64 33090075SobrienTARGET_ARCHES_pc98?= i386 33190075SobrienTARGET_ARCHES_sun4v?= sparc64 33290075Sobrien.for target in ${TARGETS} 33318334SpeterTARGET_ARCHES_${target}?= ${target} 33490075Sobrien.endfor 33590075Sobrien 33618334Speter.if defined(UNIVERSE_TARGET) 33790075SobrienMAKE_JUST_WORLDS= YES 33890075Sobrien.else 33990075SobrienUNIVERSE_TARGET?= buildworld 34090075Sobrien.endif 34190075SobrienKERNSRCDIR?= ${.CURDIR}/sys 34290075Sobrien 34390075Sobrientargets: 34490075Sobrien @echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets" 34590075Sobrien.for target in ${TARGETS} 34690075Sobrien.for target_arch in ${TARGET_ARCHES_${target}} 34790075Sobrien @echo " ${target}/${target_arch}" 34890075Sobrien.endfor 34990075Sobrien.endfor 35018334Speter 35190075Sobrien.if defined(DOING_TINDERBOX) 35290075SobrienFAILFILE=${.CURDIR}/_.tinderbox.failed 35390075SobrienMAKEFAIL=tee -a ${FAILFILE} 35418334Speter.else 35518334SpeterMAKEFAIL=cat 35618334Speter.endif 35718334Speter 35818334Speteruniverse: universe_prologue 35918334Speteruniverse_prologue: 36090075Sobrien @echo "--------------------------------------------------------------" 36118334Speter @echo ">>> make universe started on ${STARTTIME}" 36218334Speter @echo "--------------------------------------------------------------" 36390075Sobrien.if defined(DOING_TINDERBOX) 36418334Speter @rm -f ${FAILFILE} 36518334Speter.endif 36618334Speter.for target in ${TARGETS} 36790075Sobrienuniverse: universe_${target} 36818334Speter.ORDER: universe_prologue universe_${target} universe_epilogue 36918334Speteruniverse_${target}: universe_${target}_prologue 37090075Sobrienuniverse_${target}_prologue: 37118334Speter @echo ">> ${target} started on `LC_ALL=C date`" 37290075Sobrien.if !defined(MAKE_JUST_KERNELS) 37390075Sobrien.for target_arch in ${TARGET_ARCHES_${target}} 37490075Sobrienuniverse_${target}: universe_${target}_${target_arch} 37590075Sobrienuniverse_${target}_${target_arch}: universe_${target}_prologue 37618334Speter @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`" 37718334Speter @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ 37890075Sobrien ${MAKE} ${JFLAG} ${UNIVERSE_TARGET} \ 37918334Speter TARGET=${target} \ 38090075Sobrien TARGET_ARCH=${target_arch} \ 38190075Sobrien > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \ 38290075Sobrien (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \ 38390075Sobrien "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \ 38490075Sobrien ${MAKEFAIL})) 38590075Sobrien @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`" 38690075Sobrien.endfor 38790075Sobrien.endif 38890075Sobrien.if !defined(MAKE_JUST_WORLDS) 38990075Sobrien.if exists(${KERNSRCDIR}/${target}/conf/NOTES) 39090075Sobrien @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ 39118334Speter ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ 39218334Speter (echo "${target} 'make LINT' failed," \ 39318334Speter "check _.${target}.makeLINT for details"| ${MAKEFAIL})) 39418334Speter.endif 39518334Speter @cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} \ 39690075Sobrien universe_kernels 39790075Sobrien.endif 39890075Sobrien @echo ">> ${target} completed on `LC_ALL=C date`" 39990075Sobrien.endfor 40090075Sobrienuniverse_kernels: universe_kernconfs 40118334Speter.if !defined(TARGET) 40218334SpeterTARGET!= uname -m 40318334Speter.endif 40418334SpeterKERNCONFS!= cd ${KERNSRCDIR}/${TARGET}/conf && \ 40518334Speter find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ 40618334Speter ! -name DEFAULTS ! -name NOTES 40718334Speteruniverse_kernconfs: 40818334Speter.for kernel in ${KERNCONFS} 40918334SpeterTARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/conf && \ 41018334Speter config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \ 41118334Speter grep -v WARNING: | cut -f 2 41218334Speter.if empty(TARGET_ARCH_${kernel}) 41390075Sobrien.error "Target architecture for ${TARGET}/conf/${kernel} unknown. config(8) likely too old." 41490075Sobrien.endif 41518334Speteruniverse_kernconfs: universe_kernconf_${TARGET}_${kernel} 41690075Sobrienuniverse_kernconf_${TARGET}_${kernel}: 41790075Sobrien @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ 41890075Sobrien ${MAKE} ${JFLAG} buildkernel \ 41918334Speter TARGET=${TARGET} \ 42090075Sobrien TARGET_ARCH=${TARGET_ARCH_${kernel}} \ 42118334Speter KERNCONF=${kernel} \ 42290075Sobrien > _.${TARGET}.${kernel} 2>&1 || \ 42390075Sobrien (echo "${TARGET} ${kernel} kernel failed," \ 42490075Sobrien "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) 42518334Speter.endfor 42690075Sobrienuniverse: universe_epilogue 42790075Sobrienuniverse_epilogue: 42818334Speter @echo "--------------------------------------------------------------" 42990075Sobrien @echo ">>> make universe completed on `LC_ALL=C date`" 43090075Sobrien @echo " (started ${STARTTIME})" 43118334Speter @echo "--------------------------------------------------------------" 43252284Sobrien.if defined(DOING_TINDERBOX) 43352284Sobrien @if [ -e ${FAILFILE} ] ; then \ 43452284Sobrien echo "Tinderbox failed:" ;\ 43590075Sobrien cat ${FAILFILE} ;\ 43652284Sobrien exit 1 ;\ 43752284Sobrien fi 43852284Sobrien.endif 43990075Sobrien.endif 44090075Sobrien