Honor KERNSRCDIR for 'make universe'

John Baldwin jhb at freebsd.org
Tue Feb 15 15:34:57 UTC 2011


This is useful when you want to run make universe against a custom kernel 
tree.  Specifically, if you keep a cross-compiled set of toolchains lying 
around in a stock HEAD checkout built using 'make toolchains' or 'make 
universe', then with this patch you can do:

	make MAKE_JUST_KERNELS universe KERNSRCDIR=/path/to/test/kernel/sources

This sort of worked before because KERNSRCDIR was passed to 'make buildkernel' 
via MAKEOPTIONS.  What didn't work was generating LINT files or if you had 
kernel config files in your new tree that aren't in the stock tree, etc.

Index: Makefile
===================================================================
--- Makefile	(revision 218554)
+++ Makefile	(working copy)
@@ -336,6 +336,7 @@ MAKE_JUST_WORLDS=	YES
 .else
 UNIVERSE_TARGET?=	buildworld
 .endif
+KERNSRCDIR?=		${.CURDIR}/sys
 
 targets:
 	@echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
@@ -383,8 +384,8 @@ universe_${target}_${target_arch}: universe_${targ
 .endfor
 .endif
 .if !defined(MAKE_JUST_WORLDS)
-.if exists(${.CURDIR}/sys/${target}/conf/NOTES)
-	@(cd ${.CURDIR}/sys/${target}/conf && env __MAKE_CONF=/dev/null \
+.if exists(${KERNSRCDIR}/${target}/conf/NOTES)
+	@(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
 	    ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \
 	    (echo "${target} 'make LINT' failed," \
 	    "check _.${target}.makeLINT for details"| ${MAKEFAIL}))
@@ -398,13 +399,13 @@ universe_kernels: universe_kernconfs
 .if !defined(TARGET)
 TARGET!=	uname -m
 .endif
-KERNCONFS!=	cd ${.CURDIR}/sys/${TARGET}/conf && \
+KERNCONFS!=	cd ${KERNSRCDIR}/${TARGET}/conf && \
 		find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \
 		! -name DEFAULTS ! -name NOTES
 universe_kernconfs:
 .for kernel in ${KERNCONFS}
-TARGET_ARCH_${kernel}!=	cd ${.CURDIR}/sys/${TARGET}/conf && \
-	config -m ${.CURDIR}/sys/${TARGET}/conf/${kernel} 2> /dev/null | \
+TARGET_ARCH_${kernel}!=	cd ${KERNSRCDIR}/${TARGET}/conf && \
+	config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \
 	grep -v WARNING: | cut -f 2
 .if empty(TARGET_ARCH_${kernel})
 .error "Target architecture for ${TARGET}/conf/${kernel} unknown.  config(8) 
likely too old."

-- 
John Baldwin


More information about the freebsd-current mailing list