1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-12 09:58:36 +00:00

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
This commit is contained in:
Bryan Drewery 2015-10-23 19:41:58 +00:00
parent 6123d3f697
commit 0d2a1539d1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=289846

View File

@ -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}