diff --git a/Makefile.inc1 b/Makefile.inc1 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -1748,16 +1748,10 @@ BUILDKERNELS+= dummy .endif .for _kernel in ${KERNCONF} -.if !defined(_MKSHOWCONFIG) && exists(${KERNCONFDIR}/${_kernel}) BUILDKERNELS+= ${_kernel} .if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL) INSTALLKERNEL= ${_kernel} .endif -.else -.if make(buildkernel) -.error Missing KERNCONF ${KERNCONFDIR}/${_kernel} -.endif -.endif .endfor _cleankernobj_fast_depend_hack: .PHONY @@ -1782,6 +1776,29 @@ _BUILDKERNEL_START!= date '+%s' .endif +# Construct a variant configuration file +.if make(kernconffile) +.if exists(${KERNCONFDIR}/${KERNCONF}) +kernconffile: + cp ${KERNCONFDIR}/${KERNCONF} ${KRNLOBJDIR}/${KERNCONFTGT} +.else +KERNCONFPREFIX=${KERNCONF:C/-[^-]+$//} +KERNCONFSUFFIX=${KERNCONF:C/^.*-//} +kernconffile: +.if ${KERNCONF} == ${KERNCONFPREFIX} +.error Missing KERNCONF ${KERNCONFDIR}/${KERNCONF} +.endif + ${_+_}${MAKE} -C ${.CURDIR} -f Makefile.inc1 kernconffile \ + KERNCONF=${KERNCONFPREFIX} KERNCONFTGT=${KERNCONFTGT} + ( \ + echo "# ${KERNCONF} -- automatically generated configuration file"; \ + echo "include ${KERNCONFPREFIX}"; \ + echo "include \"std.${KERNCONFSUFFIX:tl}\""; \ + echo "ident ${KERNCONF}" \ + ) > ${KRNLOBJDIR}/${KERNCONFTGT}/${KERNCONF} +.endif +.endif + # # buildkernel # @@ -1804,11 +1821,14 @@ @echo "--------------------------------------------------------------" @echo ">>> stage 1: configuring the kernel" @echo "--------------------------------------------------------------" + mkdir -p ${KRNLOBJDIR}/${_kernel} + ${_+_}${MAKE} -C ${.CURDIR} -f Makefile.inc1 kernconffile \ + KERNCONF=${_kernel} KERNCONFTGT=${_kernel} cd ${KRNLCONFDIR}; \ PATH=${TMPPATH:Q} \ config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ - -I '${KERNCONFDIR}' -I '${KRNLCONFDIR}' \ - '${KERNCONFDIR}/${_kernel}' + -I '${KERNOBJDIR}/${_kernel}' -I '${KRNLCONFDIR}' \ + '${KRNLOBJDIR}/${_kernel}/${_kernel}' .endif .if ${MK_CLEAN} == "yes" && !defined(NO_KERNELCLEAN) @echo