Fix nested MAKEOBJDIRPREFIX breaking various release/buildworld/toolchain targets.

This problem was caused by r325329 and r325350.

For the release(7) targets, some will run mm-mtree.sh which itself runs make
with a MAKEOBJDIRPREFIX.  The execution of that script leaks OBJROOT,
MAKEOBJDIR, and MAKELEVEL=1 in the environment.  This causes the mm-mtree makes
to not do some basic setup of OBJROOT and only use this special
MAKEOBJDIRPREFIX case which fails to empty out MAKEOBJDIRPREFIX for further
nested makes, such as a tree walk.  If that tree walk sets OBJROOT/OBJTOP such
as r325329 is doing, then the wrong OBJDIRs end up being used due to the
unemptied MAKEOBJDIRPREFIX being preferred over the proper MAKEOBJDIR.

Pointyhat to:	bdrewery
Sponsored by:	Dell EMC Isilon
This commit is contained in:
Bryan Drewery 2017-11-05 00:11:51 +00:00
parent 1031b94fc4
commit 996e475962
3 changed files with 5 additions and 0 deletions

View File

@ -523,6 +523,7 @@ BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
BSARGS= DESTDIR= \ BSARGS= DESTDIR= \
OBJTOP='${WORLDTMP}/obj-tools' \ OBJTOP='${WORLDTMP}/obj-tools' \
OBJROOT='$${OBJTOP}/' \ OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
BOOTSTRAPPING=${OSRELDATE} \ BOOTSTRAPPING=${OSRELDATE} \
BWPHASE=${.TARGET:C,^_,,} \ BWPHASE=${.TARGET:C,^_,,} \
SSP_CFLAGS= \ SSP_CFLAGS= \
@ -565,6 +566,7 @@ KTMAKE= TOOLS_PREFIX=${WORLDTMP} \
DESTDIR= \ DESTDIR= \
OBJTOP='${WORLDTMP}/obj-kernel-tools' \ OBJTOP='${WORLDTMP}/obj-kernel-tools' \
OBJROOT='$${OBJTOP}/' \ OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
BOOTSTRAPPING=${OSRELDATE} \ BOOTSTRAPPING=${OSRELDATE} \
SSP_CFLAGS= \ SSP_CFLAGS= \
MK_HTML=no -DNO_LINT MK_MAN=no \ MK_HTML=no -DNO_LINT MK_MAN=no \

View File

@ -129,6 +129,7 @@ LIBCOMPATWMAKEFLAGS+= CC="${XCC} ${LIBCOMPATCFLAGS}" \
LIBCOMPATWMAKE+= ${LIBCOMPATWMAKEENV} ${MAKE} ${LIBCOMPATWMAKEFLAGS} \ LIBCOMPATWMAKE+= ${LIBCOMPATWMAKEENV} ${MAKE} ${LIBCOMPATWMAKEFLAGS} \
OBJTOP=${LIBCOMPAT_OBJTOP} \ OBJTOP=${LIBCOMPAT_OBJTOP} \
OBJROOT='$${OBJTOP}/' \ OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
MK_MAN=no MK_HTML=no MK_MAN=no MK_HTML=no
LIBCOMPATIMAKE+= ${LIBCOMPATWMAKE:NINSTALL=*:NDESTDIR=*} \ LIBCOMPATIMAKE+= ${LIBCOMPATWMAKE:NINSTALL=*:NDESTDIR=*} \
MK_TOOLCHAIN=no ${IMAKE_INSTALL} \ MK_TOOLCHAIN=no ${IMAKE_INSTALL} \
@ -188,6 +189,7 @@ build${libcompat}: .PHONY
${MAKE} SSP_CFLAGS= DESTDIR= \ ${MAKE} SSP_CFLAGS= DESTDIR= \
OBJTOP=${LIBCOMPAT_OBJTOP} \ OBJTOP=${LIBCOMPAT_OBJTOP} \
OBJROOT='$${OBJTOP}/' \ OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
build-tools build-tools
.endfor .endfor

View File

@ -36,6 +36,7 @@ OSRELDATE?= 0
BSARGS= DESTDIR= \ BSARGS= DESTDIR= \
OBJTOP='${WORLDTMP}/obj-tools' \ OBJTOP='${WORLDTMP}/obj-tools' \
OBJROOT='$${OBJTOP}/' \ OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
BOOTSTRAPPING=${OSRELDATE} \ BOOTSTRAPPING=${OSRELDATE} \
BWPHASE=${.TARGET} \ BWPHASE=${.TARGET} \
SSP_CFLAGS= \ SSP_CFLAGS= \