summaryrefslogtreecommitdiffstats
path: root/share/mk
diff options
context:
space:
mode:
authorbdrewery <bdrewery@FreeBSD.org>2015-10-23 19:41:58 +0000
committerbdrewery <bdrewery@FreeBSD.org>2015-10-23 19:41:58 +0000
commitfab547dc0c9b8e00dc2430e44e9c5758a027abe6 (patch)
tree030fcd1c3275a3bc8936dff3f16f17f4e963692c /share/mk
parentf11412f79ebf4062cdaacff9e3aaf15e8555d72e (diff)
downloadFreeBSD-src-fab547dc0c9b8e00dc2430e44e9c5758a027abe6.zip
FreeBSD-src-fab547dc0c9b8e00dc2430e44e9c5758a027abe6.tar.gz
Fix regression from r289734 that caused crunchgen "subdirs" to not be
properly recursed. The .for loop was defining a ${__dir} variable that was being set at a different evaluation time than the target itself, so every 'cd ${__dir}' became the last value that was in ${__dir}. This resulted in 'make obj' not properly being ran in the tree that would leave .depend files scattered around when 'make all' was ran in rescue/. To fix this, define a CRUNCH_SRCDIR_* for every prog if it does not already have one and then use that variable in every relevant place. This allows simplifying some logic as well. Reported by: emaste X-MFC-With: r289734 MFC after: 3 weeks Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'share/mk')
-rw-r--r--share/mk/bsd.crunchgen.mk22
1 files changed, 8 insertions, 14 deletions
diff --git a/share/mk/bsd.crunchgen.mk b/share/mk/bsd.crunchgen.mk
index f61dc68..e84e507 100644
--- a/share/mk/bsd.crunchgen.mk
+++ b/share/mk/bsd.crunchgen.mk
@@ -50,15 +50,18 @@ CLEANFILES+= ${CONF} *.o *.lo *.c *.mk *.cache *.a *.h
# Don't try to extract debug info from ${PROG}.
MK_DEBUG_FILES= no
+# Set a default SRCDIR for each for simpler handling below.
+.for D in ${CRUNCH_SRCDIRS}
+.for P in ${CRUNCH_PROGS_${D}}
+CRUNCH_SRCDIR_${P}?= ${.CURDIR}/../../${D}/${P}
+.endfor
+.endfor
+
# Program names and their aliases contribute hardlinks to 'rescue' executable,
# except for those that get suppressed.
.for D in ${CRUNCH_SRCDIRS}
.for P in ${CRUNCH_PROGS_${D}}
-.ifdef CRUNCH_SRCDIR_${P}
${OUTPUTS}: ${CRUNCH_SRCDIR_${P}}/Makefile
-.else
-${OUTPUTS}: ${.CURDIR}/../../${D}/${P}/Makefile
-.endif
.if ${CRUNCH_GENERATE_LINKS} == "yes"
.ifndef CRUNCH_SUPPRESS_LINK_${P}
LINKS+= ${BINDIR}/${PROG} ${BINDIR}/${P}
@@ -89,11 +92,7 @@ ${CONF}: Makefile
.for D in ${CRUNCH_SRCDIRS}
.for P in ${CRUNCH_PROGS_${D}}
echo progs ${P} >>${.TARGET}
-.ifdef CRUNCH_SRCDIR_${P}
echo special ${P} srcdir ${CRUNCH_SRCDIR_${P}} >>${.TARGET}
-.else
- echo special ${P} srcdir ${.CURDIR}/../../${D}/${P} >>${.TARGET}
-.endif
.ifdef CRUNCH_BUILDOPTS_${P}
echo special ${P} buildopts DIRPRFX=${DIRPRFX}${P}/ \
${CRUNCH_BUILDOPTS_${P}} >>${.TARGET}
@@ -138,13 +137,8 @@ build-tools: build-tools-${_tool}
.for __target in clean cleandepend cleandir obj objlink
.for D in ${CRUNCH_SRCDIRS}
.for P in ${CRUNCH_PROGS_${D}}
-.ifdef CRUNCH_SRCDIR_${P}
-__dir= ${CRUNCH_SRCDIR_${P}}
-.else
-__dir= ${.CURDIR}/../../${D}/${P}
-.endif
${__target}_crunchdir_${P}: .PHONY .MAKE
- ${_+_}cd ${__dir} && \
+ ${_+_}cd ${CRUNCH_SRCDIR_${P}} && \
${CRUNCHENV} MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${__target}
${__target}: ${__target}_crunchdir_${P}
OpenPOWER on IntegriCloud