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
This commit is contained in:
bdrewery 2019-06-15 17:08:02 +00:00
parent b9ed34c3c4
commit e543aab538

View File

@ -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