svn commit: r290629 - head/share/mk

Bryan Drewery bdrewery at FreeBSD.org
Mon Nov 9 23:37:06 UTC 2015


Author: bdrewery
Date: Mon Nov  9 23:37:04 2015
New Revision: 290629
URL: https://svnweb.freebsd.org/changeset/base/290629

Log:
  FAST_DEPEND: Fix building of wrong source files in some cases.
  
  Similar to the original reason for these dependency hints to be added,
  in r124637, the missing-dependency file case can lead to building of the
  wrong source.
  
  A clear example of this is in gnu/lib/libstdc++ where the .PATH contains
  both contrib/gcc and contrib/libstdc++/src.
  
    contrib/gcc has a debug.c.
    contrib/libstdc++/src has a debug.cc.
  
    When building for the objects of debug.o, debug.So, and debug.po, it is
    ambiguous for which src file to use due to the suffix transformation
    rules, even though the proper one is listed first in .PATH.
  
    This was normally avoided due to these dependency hints for the initial
    build, and then mkdep would add an explicit 'debug.o: debug.cc'
    dependency into the .depend file.  WITH_FAST_DEPEND does not generate
    the .depend file with these, but puts them into .depend.debug.o instead.
  
  Rather than extending the exists() check to each object's .depend.*
  file, just enable the hint when when using WITH_FAST_DEPEND.  It fixes
  the problem and seems to be safe enough to use since it is mapping SRCS
  back to OBJS, rather than letting make make assumptions from OBJS to
  SRCS.
  
  A similar check mapping objects to headers is present in some mk files
  but was not extended here for FAST_DEPEND since it has not yet been
  found to be a problem.
  
  X-MFC-With:	r290433
  MFC after:	3 weeks
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/share/mk/bsd.dep.mk
  head/share/mk/bsd.lib.mk

Modified: head/share/mk/bsd.dep.mk
==============================================================================
--- head/share/mk/bsd.dep.mk	Mon Nov  9 23:37:01 2015	(r290628)
+++ head/share/mk/bsd.dep.mk	Mon Nov  9 23:37:04 2015	(r290629)
@@ -88,7 +88,7 @@ tags: ${SRCS}
 .if defined(SRCS)
 CLEANFILES?=
 
-.if !exists(${.OBJDIR}/${DEPENDFILE})
+.if ${MK_FAST_DEPEND} == "yes" || !exists(${.OBJDIR}/${DEPENDFILE})
 .for _S in ${SRCS:N*.[dhly]}
 ${_S:R}.o: ${_S}
 .endfor
@@ -99,7 +99,7 @@ ${_S:R}.o: ${_S}
 .for _LC in ${_LSRC:R}.c
 ${_LC}: ${_LSRC}
 	${LEX} ${LFLAGS} -o${.TARGET} ${.ALLSRC}
-.if !exists(${.OBJDIR}/${DEPENDFILE})
+.if ${MK_FAST_DEPEND} == "yes" || !exists(${.OBJDIR}/${DEPENDFILE})
 ${_LC:R}.o: ${_LC}
 .endif
 SRCS:=	${SRCS:S/${_LSRC}/${_LC}/}
@@ -130,7 +130,7 @@ CLEANFILES+= ${_YH}
 ${_YC}: ${_YSRC}
 	${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
 .endif
-.if !exists(${.OBJDIR}/${DEPENDFILE})
+.if ${MK_FAST_DEPEND} == "yes" || !exists(${.OBJDIR}/${DEPENDFILE})
 ${_YC:R}.o: ${_YC}
 .endif
 .endfor

Modified: head/share/mk/bsd.lib.mk
==============================================================================
--- head/share/mk/bsd.lib.mk	Mon Nov  9 23:37:01 2015	(r290628)
+++ head/share/mk/bsd.lib.mk	Mon Nov  9 23:37:04 2015	(r290629)
@@ -417,9 +417,11 @@ lint: ${SRCS:M*.c}
 
 .include <bsd.dep.mk>
 
-.if !exists(${.OBJDIR}/${DEPENDFILE})
+.if ${MK_FAST_DEPEND} == "yes" || !exists(${.OBJDIR}/${DEPENDFILE})
 .if defined(LIB) && !empty(LIB)
+.if ${MK_FAST_DEPEND} == "no"
 ${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
+.endif
 .for _S in ${SRCS:N*.[hly]}
 ${_S:R}.po: ${_S}
 .endfor


More information about the svn-src-all mailing list