Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jan 2016 01:40:19 +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: r294370 - head/share/mk
Message-ID:  <201601200140.u0K1eJhh016578@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bdrewery
Date: Wed Jan 20 01:40:18 2016
New Revision: 294370
URL: https://svnweb.freebsd.org/changeset/base/294370

Log:
  mkdep: Fix -include not being added for .depend tracking.
  
  This fixes incremental build of OpenSSH after the recent upgrade.
  
  For example, in secure/lib/libssh, -include ssh_namespace.h is used on
  all files.  This is not tracked in the .depend file though due to
  MKDEP_CFLAGS not including it.  The ssh example was broken in r291941
  when not using FAST_DEPEND due to the .depend bug.  FAST_DEPEND was not
  affected by this because it generates dependencies at compile time and
  thus sees the -include.
  
  This ugly make syntax could be simpler for bmake by using :tW but
  fmake-compatible syntax is used since this needs to be MFC'd all the way
  to stable/9.
  
  Also add a temporary hack to workaround existing checkouts building
  incrementally with a .depend file not having these headers.
  
  MFC after:	1 week
  Sponsored by:	EMC / Isilon Storage Division

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

Modified: head/share/mk/bsd.dep.mk
==============================================================================
--- head/share/mk/bsd.dep.mk	Wed Jan 20 01:11:01 2016	(r294369)
+++ head/share/mk/bsd.dep.mk	Wed Jan 20 01:40:18 2016	(r294370)
@@ -196,12 +196,27 @@ depend: beforedepend ${DEPENDFILE} after
 # Tell bmake not to look for generated files via .PATH
 .NOPATH: ${DEPENDFILE} ${DEPENDFILES_OBJS}
 
+.if ${MK_FAST_DEPEND} == "no"
+# Capture -include from CFLAGS.
+# This could be simpler with bmake :tW but needs to support fmake for MFC.
+_CFLAGS_INCLUDES= ${CFLAGS:Q:S/\\ /,/g:C/-include,/-include%/g:C/,/ /g:M-include*:C/%/ /g}
+_CXXFLAGS_INCLUDES= ${CXXFLAGS:Q:S/\\ /,/g:C/-include,/-include%/g:C/,/ /g:M-include*:C/%/ /g}
+# XXX: Temporary hack to workaround .depend files not tracking -include
+.if !empty(_CFLAGS_INCLUDES)
+${OBJS} ${POBJS} ${SOBJS}: ${_CFLAGS_INCLUDES:M*.h}
+.endif
+.if !empty(_CXXFLAGS_INCLUDES)
+${OBJS} ${POBJS} ${SOBJS}: ${_CXXFLAGS_INCLUDES:M*.h}
+.endif
+
 # Different types of sources are compiled with slightly different flags.
 # Split up the sources, and filter out headers and non-applicable flags.
 MKDEP_CFLAGS=	${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BIDU]*} ${CFLAGS:M-std=*} \
-		${CFLAGS:M-ansi}
+		${CFLAGS:M-ansi} ${_CFLAGS_INCLUDES}
 MKDEP_CXXFLAGS=	${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BIDU]*} \
-		${CXXFLAGS:M-std=*} ${CXXFLAGS:M-ansi} ${CXXFLAGS:M-stdlib=*}
+		${CXXFLAGS:M-std=*} ${CXXFLAGS:M-ansi} ${CXXFLAGS:M-stdlib=*} \
+		${_CXXFLAGS_INCLUDES}
+.endif	# ${MK_FAST_DEPEND} == "no"
 
 DPSRCS+= ${SRCS}
 ${DEPENDFILE}: ${DPSRCS}



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