Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2016 17:19:13 +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: r295987 - in head: share/mk sys/conf
Message-ID:  <201602241719.u1OHJDJS089720@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bdrewery
Date: Wed Feb 24 17:19:13 2016
New Revision: 295987
URL: https://svnweb.freebsd.org/changeset/base/295987

Log:
  Hook the meta/nofilemon build into using FAST_DEPEND.
  
  FAST_DEPEND is intended to be the "skip 'make depend' and mkdep"
  feature.  Since DIRDEPS_BUILD does this already with some of its own
  hacks, and filemon doesn't need this, and nofilemon does, teach it how
  to handle each of these cases.
  
  In meta+filemon mode filemon will handle dependencies itself via the
  meta mode logic in bmake.  We still want to set MK_FAST_DEPEND=yes to
  enable some logic that indicates that 'make depend' is skipped in the
  traditional sense.  The actual .depend.* files will be skipped.
  
  When nofilemon is set though we still need to track and generate dependencies.
  
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/share/mk/bsd.dep.mk
  head/share/mk/bsd.opts.mk
  head/share/mk/local.meta.sys.mk
  head/sys/conf/kern.opts.mk
  head/sys/conf/kern.post.mk

Modified: head/share/mk/bsd.dep.mk
==============================================================================
--- head/share/mk/bsd.dep.mk	Wed Feb 24 17:19:09 2016	(r295986)
+++ head/share/mk/bsd.dep.mk	Wed Feb 24 17:19:13 2016	(r295987)
@@ -173,14 +173,24 @@ ${_D}.po: ${_DSRC} ${POBJS:S/^${_D}.po$/
 .endfor
 
 
-.if ${MK_FAST_DEPEND} == "yes" && \
-    (${.MAKE.MODE:Mmeta} == "" || ${.MAKE.MODE:Mnofilemon} != "")
+.if !empty(.MAKE.MODE:Mmeta) && empty(.MAKE.MODE:Mnofilemon)
+_meta_filemon=	1
+.endif
+.if ${MK_FAST_DEPEND} == "yes"
 DEPEND_MP?=	-MP
 # Handle OBJS=../somefile.o hacks.  Just replace '/' rather than use :T to
 # avoid collisions.
 DEPEND_FILTER=	C,/,_,g
+DEPENDSRCS=	${SRCS:M*.[cSC]} ${SRCS:M*.cxx} ${SRCS:M*.cpp} ${SRCS:M*.cc}
+.if !empty(DEPENDSRCS)
+DEPENDOBJS+=	${DEPENDSRCS:R:S,$,.o,}
+.endif
+DEPENDFILES_OBJS=	${DEPENDOBJS:O:u:${DEPEND_FILTER}:C/^/${DEPENDFILE}./}
 DEPEND_CFLAGS+=	-MD ${DEPEND_MP} -MF${DEPENDFILE}.${.TARGET:${DEPEND_FILTER}}
 DEPEND_CFLAGS+=	-MT${.TARGET}
+# Skip generating or including .depend.* files if in meta+filemon mode since
+# it will track dependencies itself.  OBJS_DEPEND_GUESS is still used though.
+.if !defined(_meta_filemon)
 .if defined(.PARSEDIR)
 # Only add in DEPEND_CFLAGS for CFLAGS on files we expect from DEPENDOBJS
 # as those are the only ones we will include.
@@ -189,34 +199,34 @@ CFLAGS+=	${${DEPEND_CFLAGS_CONDITION}:?$
 .else
 CFLAGS+=	${DEPEND_CFLAGS}
 .endif
-DEPENDSRCS=	${SRCS:M*.[cSC]} ${SRCS:M*.cxx} ${SRCS:M*.cpp} ${SRCS:M*.cc}
-.if !empty(DEPENDSRCS)
-DEPENDOBJS+=	${DEPENDSRCS:R:S,$,.o,}
-.endif
-DEPENDFILES_OBJS=	${DEPENDOBJS:O:u:${DEPEND_FILTER}:C/^/${DEPENDFILE}./}
 .if !defined(_SKIP_READ_DEPEND)
 .for __depend_obj in ${DEPENDFILES_OBJS}
 .sinclude "${__depend_obj}"
 .endfor
 .endif	# !defined(_SKIP_READ_DEPEND)
+.endif	# !defined(_meta_filemon)
 .endif	# ${MK_FAST_DEPEND} == "yes"
 .endif	# defined(SRCS)
 
 .if ${MK_DIRDEPS_BUILD} == "yes"
 .include <meta.autodep.mk>
+# If using filemon then _EXTRADEPEND is skipped since it is not needed.
+.if empty(.MAKE.MODE:Mnofilemon)
 # this depend: bypasses that below
 # the dependency helps when bootstrapping
 depend: beforedepend ${DPSRCS} ${SRCS} afterdepend
 beforedepend:
 afterdepend: beforedepend
 .endif
+.endif
 
 # Guess some dependencies for when no ${DEPENDFILE}.OBJ is generated yet.
-# Done here to support meta mode as well which does not always need
-# the CFLAGS modifications or .depend.* included.
+# For meta+filemon the .meta file is checked for since it is the dependency
+# file used.
 .if ${MK_FAST_DEPEND} == "yes"
 .for __obj in ${DEPENDOBJS:O:u}
-.if !exists(${.OBJDIR}/${DEPENDFILE}.${__obj})
+.if (defined(_meta_filemon) && !exists(${.OBJDIR}/${__obj}.meta)) || \
+    (!defined(_meta_filemon) && !exists(${.OBJDIR}/${DEPENDFILE}.${__obj}))
 ${__obj}: ${OBJS_DEPEND_GUESS}
 ${__obj}: ${OBJS_DEPEND_GUESS.${__obj}}
 .endif

Modified: head/share/mk/bsd.opts.mk
==============================================================================
--- head/share/mk/bsd.opts.mk	Wed Feb 24 17:19:09 2016	(r295986)
+++ head/share/mk/bsd.opts.mk	Wed Feb 24 17:19:13 2016	(r295987)
@@ -77,7 +77,14 @@ __DEFAULT_NO_OPTIONS = \
 __DEFAULT_DEPENDENT_OPTIONS = \
     STAGING_MAN/STAGING \
     STAGING_PROG/STAGING \
-    
+
+
+# Enable FAST_DEPEND by default for the meta build.
+.if !empty(.MAKE.MODE:Mmeta)
+__DEFAULT_YES_OPTIONS+=	FAST_DEPEND
+__DEFAULT_NO_OPTIONS:=	${__DEFAULT_NO_OPTIONS:NFAST_DEPEND}
+.endif
+
 .include <bsd.mkopt.mk>
 
 #

Modified: head/share/mk/local.meta.sys.mk
==============================================================================
--- head/share/mk/local.meta.sys.mk	Wed Feb 24 17:19:09 2016	(r295986)
+++ head/share/mk/local.meta.sys.mk	Wed Feb 24 17:19:13 2016	(r295987)
@@ -6,6 +6,7 @@
 
 # we need this until there is an alternative
 MK_INSTALL_AS_USER= yes
+MK_FAST_DEPEND= yes
 
 _default_makeobjdir=$${.CURDIR:S,^$${SRCTOP},$${OBJTOP},}
 

Modified: head/sys/conf/kern.opts.mk
==============================================================================
--- head/sys/conf/kern.opts.mk	Wed Feb 24 17:19:09 2016	(r295986)
+++ head/sys/conf/kern.opts.mk	Wed Feb 24 17:19:13 2016	(r295987)
@@ -49,6 +49,12 @@ __DEFAULT_NO_OPTIONS = \
     NAND \
     OFED
 
+# Enable FAST_DEPEND by default for the meta build.
+.if !empty(.MAKE.MODE:Unormal:Mmeta)
+__DEFAULT_YES_OPTIONS+=	FAST_DEPEND
+__DEFAULT_NO_OPTIONS:=	${__DEFAULT_NO_OPTIONS:NFAST_DEPEND}
+.endif
+
 # Some options are totally broken on some architectures. We disable
 # them. If you need to enable them on an experimental basis, you
 # must change this code.

Modified: head/sys/conf/kern.post.mk
==============================================================================
--- head/sys/conf/kern.post.mk	Wed Feb 24 17:19:09 2016	(r295986)
+++ head/sys/conf/kern.post.mk	Wed Feb 24 17:19:13 2016	(r295987)
@@ -226,10 +226,17 @@ SRCS=	assym.s vnode_if.h ${BEFORE_DEPEND
 	${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} \
 	${MFILES:T:S/.m$/.h/}
 DEPENDFILES=	.depend .depend.*
-.if ${MK_FAST_DEPEND} == "yes" && \
-    (${.MAKE.MODE:Unormal:Mmeta} == "" || ${.MAKE.MODE:Unormal:Mnofilemon} != "")
+# Skip generating or including .depend.* files if in meta+filemon mode since
+# it will track dependencies itself.  OBJS_DEPEND_GUESS is still used though.
+.if !empty(.MAKE.MODE:Unormal:Mmeta) && empty(.MAKE.MODE:Unormal:Mnofilemon)
+_meta_filemon=	1
+.endif
+.if ${MK_FAST_DEPEND} == "yes"
+DEPENDOBJS+=	${SYSTEM_OBJS} genassym.o
+DEPENDFILES_OBJS=	${DEPENDOBJS:O:u:C/^/.depend./}
 DEPEND_CFLAGS+=	-MD -MP -MF.depend.${.TARGET}
 DEPEND_CFLAGS+=	-MT${.TARGET}
+.if !defined(_meta_filemon)
 .if defined(.PARSEDIR)
 # Only add in DEPEND_CFLAGS for CFLAGS on files we expect from DEPENDOBJS
 # as those are the only ones we will include.
@@ -238,22 +245,28 @@ CFLAGS+=	${${DEPEND_CFLAGS_CONDITION}:?$
 .else
 CFLAGS+=	${DEPEND_CFLAGS}
 .endif
-DEPENDOBJS+=	${SYSTEM_OBJS} genassym.o
-DEPENDFILES_OBJS=	${DEPENDOBJS:O:u:C/^/.depend./}
 .if !defined(_SKIP_READ_DEPEND)
-.for __obj in ${DEPENDOBJS}
-.if exists(${.OBJDIR}/.depend.${__obj})
-.include ".depend.${__obj}"
-.else
-# Guess some dependencies for when no .depend.OBJ is generated yet.
+.for __depend_obj in ${DEPENDFILES_OBJS}
+.sinclude "${__depend_obj}"
+.endfor
+.endif	# !defined(_SKIP_READ_DEPEND)
+.endif	# !defined(_meta_filemon)
+.endif	# ${MK_FAST_DEPEND} == "yes"
+
+# Guess some dependencies for when no ${DEPENDFILE}.OBJ is generated yet.
+# For meta+filemon the .meta file is checked for since it is the dependency
+# file used.
+.if ${MK_FAST_DEPEND} == "yes"
+.for __obj in ${DEPENDOBJS:O:u}
+.if (defined(_meta_filemon) && !exists(${.OBJDIR}/${__obj}.meta)) || \
+    (!defined(_meta_filemon) && !exists(${.OBJDIR}/.depend.${__obj}))
 .if ${SYSTEM_OBJS:M${__obj}}
 ${__obj}: ${OBJS_DEPEND_GUESS}
 .endif
 ${__obj}: ${OBJS_DEPEND_GUESS.${__obj}}
 .endif
 .endfor
-.endif	# !defined(_SKIP_READ_DEPEND)
-.endif	# ${MK_FAST_DEPEND} == "yes"
+.endif
 
 .NOPATH: .depend ${DEPENDFILES_OBJS}
 



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