Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Oct 2015 19:41:58 +0000 (UTC)
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r289846 - head/share/mk
Message-ID:  <201510231941.t9NJfwhb091889@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bdrewery
Date: Fri Oct 23 19:41:58 2015
New Revision: 289846
URL: https://svnweb.freebsd.org/changeset/base/289846

Log:
  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

Modified:
  head/share/mk/bsd.crunchgen.mk

Modified: head/share/mk/bsd.crunchgen.mk
==============================================================================
--- head/share/mk/bsd.crunchgen.mk	Fri Oct 23 19:28:24 2015	(r289845)
+++ head/share/mk/bsd.crunchgen.mk	Fri Oct 23 19:41:58 2015	(r289846)
@@ -50,15 +50,18 @@ CLEANFILES+= ${CONF} *.o *.lo *.c *.mk *
 # 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}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510231941.t9NJfwhb091889>