Index: sys/conf/kern.post.mk =================================================================== --- sys/conf/kern.post.mk +++ sys/conf/kern.post.mk @@ -63,23 +63,30 @@ ${MAKEOBJDIRPREFIX}${SRC_BASE}/include/osreldate.h .endif # Keep the related ports builds in the obj directory so that they are only rebuilt once per kernel build -WRKDIRPREFIX?= ${.OBJDIR} +WRKDIRPREFIX?= ${.OBJDIR} +STAGEDSHAREDIR?= ${.OBJDIR}/share.ports +STAGEDSHAREMK= ${STAGEDSHAREDIR}/mk PORTSMODULESENV=\ env \ -u CC \ -u CXX \ -u CPP \ - -u MAKESYSPATH \ - MAKEFLAGS="${MAKEFLAGS:M*:tW:S/^-m /-m_/g:S/ -m / -m_/g:tw:N-m_*}" \ - SYSDIR=${SYSDIR} \ + -u MK_AUTO_OBJ \ + -u MAKEOBJDIR \ + MAKESYSPATH=${STAGEDSHAREMK} \ + MAKEFLAGS="${MAKEFLAGS:M*:tW:S/^-m /-m_/g:S/ -m / -m_/g:tw:N-m_*:NMK_AUTO_OBJ=*}" \ PATH=${PATH}:${LOCALBASE}/bin:${LOCALBASE}/sbin \ SRC_BASE=${SRC_BASE} \ OSVERSION=${OSRELDATE} \ WRKDIRPREFIX=${WRKDIRPREFIX} +${STAGEDSHAREMK}: + mkdir -p ${.TARGET} + ${MAKE} BINDIR=${STAGEDSHAREDIR} -C ${SRC_BASE}/share/mk install + # The WRKDIR needs to be cleaned before building, and trying to change the target # with a :C pattern below results in install -> instclean -all: +all: ${STAGEDSHAREMK} .for __i in ${PORTS_MODULES} @${ECHO} "===> Ports module ${__i} (all)" cd $${PORTSDIR:-/usr/ports}/${__i}; ${PORTSMODULESENV} ${MAKE} -B clean build @@ -87,7 +94,7 @@ .for __target in install reinstall clean ${__target}: ports-${__target} -ports-${__target}: +ports-${__target}: ${STAGEDSHAREMK} .for __i in ${PORTS_MODULES} @${ECHO} "===> Ports module ${__i} (${__target})" cd $${PORTSDIR:-/usr/ports}/${__i}; ${PORTSMODULESENV} ${MAKE} -B ${__target:C/(re)?install/deinstall reinstall/}