Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Feb 2011 09:25:51 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        FreeBSD current mailing list <current@freebsd.org>
Subject:   Honor KERNSRCDIR for 'make universe'
Message-ID:  <201102150925.51893.jhb@freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102150925.51893.jhb>