svn commit: r349061 - head/share/mk

Bryan Drewery bdrewery at FreeBSD.org
Sat Jun 15 17:08:03 UTC 2019


Author: bdrewery
Date: Sat Jun 15 17:08:02 2019
New Revision: 349061
URL: https://svnweb.freebsd.org/changeset/base/349061

Log:
  Don't force OBJS_DEPEND_GUESS headers onto all objects.
  
  This is in the case of not having any .depend.foo.o yet.  Don't force add *.h
  as a dependency for those. They are built in beforebuild already when in
  SRCS/DPSRCS.
  
  This change allows custom rules, like in bin/sh/Makefile for mksyntax, to not
  have cyclic dependency problems when connected to the .depend.* handling.
  
  This is purposely not copied to sys/conf/kern.post.mk as it handles
  generating headers slightly differently.
  
  MFC after:	2 weeks
  Sponsored by:	DellEMC

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

Modified: head/share/mk/bsd.dep.mk
==============================================================================
--- head/share/mk/bsd.dep.mk	Sat Jun 15 16:59:03 2019	(r349060)
+++ head/share/mk/bsd.dep.mk	Sat Jun 15 17:08:02 2019	(r349061)
@@ -251,18 +251,17 @@ _depfile=	${.OBJDIR}/${_meta_obj}
 .else
 _depfile=	${.OBJDIR}/${_dep_obj}
 .endif
-.if !exists(${_depfile})
-${__obj}: ${OBJS_DEPEND_GUESS}
-${__obj}: ${OBJS_DEPEND_GUESS.${__obj}}
-.elif defined(_meta_filemon)
-# For meta mode we still need to know which file to depend on to avoid
-# ambiguous suffix transformation rules from .PATH.  Meta mode does not
-# use .depend files.  We really only need source files, not headers since
-# they are typically in SRCS/beforebuild already.  For target-specific
-# guesses do include headers though since they may not be in SRCS.
+.if !exists(${_depfile}) || defined(_meta_filemon)
+# - Headers are normally built in beforebuild when included in DPSRCS or SRCS.
+#   So we don't need it as a guessed dependency (it may lead to cyclic problems
+#   if custom rules are defined).  The only time this causes a problem is when
+#   'make foo.o' is ran.
+# - For meta mode we still need to know which file to depend on to avoid
+#   ambiguous suffix transformation rules from .PATH.  Meta mode does not
+#   use .depend files when filemon is in use.
 ${__obj}: ${OBJS_DEPEND_GUESS:N*.h}
 ${__obj}: ${OBJS_DEPEND_GUESS.${__obj}}
-.endif	# !exists(${_depfile})
+.endif	# !exists(${_depfile}) || defined(_meta_filemon)
 .endfor
 
 # Always run 'make depend' to generate dependencies early and to avoid the


More information about the svn-src-all mailing list