]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Fix building in a directory with SUBDIRs and SUBDIR_PARALLEL.
authorbdrewery <bdrewery@FreeBSD.org>
Wed, 21 Oct 2015 00:25:18 +0000 (00:25 +0000)
committerbdrewery <bdrewery@FreeBSD.org>
Wed, 21 Oct 2015 00:25:18 +0000 (00:25 +0000)
The SUBDIR_PARALLEL feature uses a .for dir in ${SUBDIR} loop.  The old code
here for recursing was setting SUBDIR= as a make *argument*.  The SUBDIR=
replacement was not actually handled until after the .for loop was unrolled.
This could be seen with a '.info ${SUBDIR} ${dir}' inside of the loop which
showed an empty ${SUBDIR} and a set ${dir}.  Setting NO_SUBIDR= before calling
${MAKE} as an *environment* variable handles the case fine and is a more
proper mechanism for disabling subdir handling.

This could be seen with 'make -C tests/sys/kern -j15 SUBDIR_PARALLEL=yes'.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division

share/mk/bsd.progs.mk

index 2da30c70ebb59daaa00b29cc1e054a24d3320989..dce05c7d7bda7b77513c8fa401bbba749d5d4f52 100644 (file)
@@ -116,16 +116,16 @@ x.$p= PROG_CXX=$p
 $p ${p}_p: .PHONY .MAKE
        (cd ${.CURDIR} && \
            DEPENDFILE=.depend.$p \
-           ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
-           SUBDIR= PROG=$p ${x.$p})
+           NO_SUBDIR=1 ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
+           PROG=$p ${x.$p})
 
 # Pseudo targets for PROG, such as 'install'.
 .for t in ${PROGS_TARGETS:O:u}
 $p.$t: .PHONY .MAKE
        (cd ${.CURDIR} && \
            DEPENDFILE=.depend.$p \
-           ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
-           SUBDIR= PROG=$p ${x.$p} ${@:E})
+           NO_SUBDIR=1 ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
+           PROG=$p ${x.$p} ${@:E})
 .endfor
 .endfor