Rework logic for skipping .depend/.meta file read/stat/writes.
- Rename _SKIP_READ_DEPEND to _SKIP_DEPEND since it also avoids writing. - This now uses .NOMETA to avoid reading any .meta files related to DEPENDOBJS. Objects not in OBJS/DEPENDOBJS may still have their .meta files read in if they are in the dependency graph. - This also avoids statting .meta and .depend files in the META_MODE + -DNO_FILEMON case. MFC after: 2 weeks Sponsored by: Dell EMC Isilon
This commit is contained in:
parent
091867a611
commit
210ecc0021
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=320220
@ -86,10 +86,13 @@ _meta_filemon= 1
|
|||||||
# Skip reading .depend when not needed to speed up tree-walks and simple
|
# Skip reading .depend when not needed to speed up tree-walks and simple
|
||||||
# lookups. See _SKIP_BUILD logic in bsd.init.mk for more details.
|
# lookups. See _SKIP_BUILD logic in bsd.init.mk for more details.
|
||||||
# Also skip generating or including .depend.* files if in meta+filemon mode
|
# Also skip generating or including .depend.* files if in meta+filemon mode
|
||||||
# since it will track dependencies itself. OBJS_DEPEND_GUESS is still used.
|
# since it will track dependencies itself. OBJS_DEPEND_GUESS is still used
|
||||||
.if defined(_SKIP_BUILD) || defined(_meta_filemon)
|
# for _meta_filemon but not for _SKIP_DEPEND.
|
||||||
_SKIP_READ_DEPEND= 1
|
.if defined(_SKIP_BUILD)
|
||||||
|
_SKIP_DEPEND= 1
|
||||||
|
.endif
|
||||||
.if ${MK_DIRDEPS_BUILD} == "no"
|
.if ${MK_DIRDEPS_BUILD} == "no"
|
||||||
|
.if defined(_SKIP_DEPEND) || defined(_meta_filemon)
|
||||||
.MAKE.DEPENDFILE= /dev/null
|
.MAKE.DEPENDFILE= /dev/null
|
||||||
.endif
|
.endif
|
||||||
.endif
|
.endif
|
||||||
@ -180,6 +183,15 @@ DEPENDSRCS= ${SRCS:M*.[cSC]} ${SRCS:M*.cxx} ${SRCS:M*.cpp} ${SRCS:M*.cc}
|
|||||||
DEPENDOBJS+= ${DEPENDSRCS:R:S,$,.o,}
|
DEPENDOBJS+= ${DEPENDSRCS:R:S,$,.o,}
|
||||||
.endif
|
.endif
|
||||||
DEPENDFILES_OBJS= ${DEPENDOBJS:O:u:${DEPEND_FILTER}:C/^/${DEPENDFILE}./}
|
DEPENDFILES_OBJS= ${DEPENDOBJS:O:u:${DEPEND_FILTER}:C/^/${DEPENDFILE}./}
|
||||||
|
.if defined(_SKIP_DEPEND)
|
||||||
|
# Don't bother statting any .meta files for .depend*
|
||||||
|
${DEPENDOBJS}: .NOMETA
|
||||||
|
${DEPENDFILE}: .NOMETA
|
||||||
|
# Unset these to avoid looping/statting on them later.
|
||||||
|
.undef DEPENDSRCS
|
||||||
|
.undef DEPENDOBJS
|
||||||
|
.undef DEPENDFILES_OBJS
|
||||||
|
.endif # defined(_SKIP_DEPEND)
|
||||||
DEPEND_CFLAGS+= -MD ${DEPEND_MP} -MF${DEPENDFILE}.${.TARGET:${DEPEND_FILTER}}
|
DEPEND_CFLAGS+= -MD ${DEPEND_MP} -MF${DEPENDFILE}.${.TARGET:${DEPEND_FILTER}}
|
||||||
DEPEND_CFLAGS+= -MT${.TARGET}
|
DEPEND_CFLAGS+= -MT${.TARGET}
|
||||||
.if !defined(_meta_filemon)
|
.if !defined(_meta_filemon)
|
||||||
@ -191,7 +203,6 @@ CFLAGS+= ${${DEPEND_CFLAGS_CONDITION}:?${DEPEND_CFLAGS}:}
|
|||||||
.else
|
.else
|
||||||
CFLAGS+= ${DEPEND_CFLAGS}
|
CFLAGS+= ${DEPEND_CFLAGS}
|
||||||
.endif
|
.endif
|
||||||
.if !defined(_SKIP_READ_DEPEND)
|
|
||||||
.for __depend_obj in ${DEPENDFILES_OBJS}
|
.for __depend_obj in ${DEPENDFILES_OBJS}
|
||||||
.if ${MAKE_VERSION} < 20160220
|
.if ${MAKE_VERSION} < 20160220
|
||||||
.sinclude "${.OBJDIR}/${__depend_obj}"
|
.sinclude "${.OBJDIR}/${__depend_obj}"
|
||||||
@ -199,7 +210,6 @@ CFLAGS+= ${DEPEND_CFLAGS}
|
|||||||
.dinclude "${.OBJDIR}/${__depend_obj}"
|
.dinclude "${.OBJDIR}/${__depend_obj}"
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
.endif # !defined(_SKIP_READ_DEPEND)
|
|
||||||
.endif # !defined(_meta_filemon)
|
.endif # !defined(_meta_filemon)
|
||||||
.endif # defined(SRCS)
|
.endif # defined(SRCS)
|
||||||
|
|
||||||
@ -266,12 +276,14 @@ DPSRCS+= ${SRCS}
|
|||||||
# targets are kept as they be used for generating something. The target is
|
# targets are kept as they be used for generating something. The target is
|
||||||
# kept to allow 'make depend' to generate files.
|
# kept to allow 'make depend' to generate files.
|
||||||
${DEPENDFILE}: ${DPSRCS}
|
${DEPENDFILE}: ${DPSRCS}
|
||||||
|
.if !defined(_SKIP_DEPEND)
|
||||||
.if exists(${.OBJDIR}/${DEPENDFILE}) || \
|
.if exists(${.OBJDIR}/${DEPENDFILE}) || \
|
||||||
((commands(beforedepend) || \
|
((commands(beforedepend) || \
|
||||||
(!defined(_meta_filemon) && commands(_EXTRADEPEND)) || \
|
(!defined(_meta_filemon) && commands(_EXTRADEPEND)) || \
|
||||||
commands(afterdepend)) && !empty(.MAKE.MODE:Mmeta))
|
commands(afterdepend)) && !empty(.MAKE.MODE:Mmeta))
|
||||||
rm -f ${DEPENDFILE}
|
rm -f ${DEPENDFILE}
|
||||||
.endif
|
.endif
|
||||||
|
.endif
|
||||||
.if !defined(_meta_filemon) && target(_EXTRADEPEND)
|
.if !defined(_meta_filemon) && target(_EXTRADEPEND)
|
||||||
_EXTRADEPEND: .USE
|
_EXTRADEPEND: .USE
|
||||||
${DEPENDFILE}: _EXTRADEPEND
|
${DEPENDFILE}: _EXTRADEPEND
|
||||||
|
@ -199,12 +199,15 @@ _meta_filemon= 1
|
|||||||
# Skip reading .depend when not needed to speed up tree-walks and simple
|
# Skip reading .depend when not needed to speed up tree-walks and simple
|
||||||
# lookups. For install, only do this if no other targets are specified.
|
# lookups. For install, only do this if no other targets are specified.
|
||||||
# Also skip generating or including .depend.* files if in meta+filemon mode
|
# Also skip generating or including .depend.* files if in meta+filemon mode
|
||||||
# since it will track dependencies itself. OBJS_DEPEND_GUESS is still used.
|
# since it will track dependencies itself. OBJS_DEPEND_GUESS is still used
|
||||||
|
# for _meta_filemon but not for _SKIP_DEPEND.
|
||||||
.if !empty(.MAKEFLAGS:M-V${_V_READ_DEPEND}) || make(*obj) || \
|
.if !empty(.MAKEFLAGS:M-V${_V_READ_DEPEND}) || make(*obj) || \
|
||||||
${.TARGETS:M*clean*} == ${.TARGETS} || \
|
${.TARGETS:M*clean*} == ${.TARGETS} || \
|
||||||
${.TARGETS:M*install*} == ${.TARGETS} || \
|
${.TARGETS:M*install*} == ${.TARGETS} || \
|
||||||
defined(_meta_filemon)
|
defined(_meta_filemon)
|
||||||
_SKIP_READ_DEPEND= 1
|
_SKIP_DEPEND= 1
|
||||||
|
.endif
|
||||||
|
.if defined(_SKIP_DEPEND) || defined(_meta_filemon)
|
||||||
.MAKE.DEPENDFILE= /dev/null
|
.MAKE.DEPENDFILE= /dev/null
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
@ -218,6 +221,15 @@ DEPENDFILES_OBJS= ${DEPENDOBJS:O:u:C/^/.depend./}
|
|||||||
.if ${MAKE_VERSION} < 20160220
|
.if ${MAKE_VERSION} < 20160220
|
||||||
DEPEND_MP?= -MP
|
DEPEND_MP?= -MP
|
||||||
.endif
|
.endif
|
||||||
|
.if defined(_SKIP_DEPEND)
|
||||||
|
# Don't bother reading any .meta files
|
||||||
|
${DEPENDOBJS}: .NOMETA
|
||||||
|
.depend: .NOMETA
|
||||||
|
# Unset these to avoid looping/statting on them later.
|
||||||
|
.undef DEPENDSRCS
|
||||||
|
.undef DEPENDOBJS
|
||||||
|
.undef DEPENDFILES_OBJS
|
||||||
|
.endif # defined(_SKIP_DEPEND)
|
||||||
DEPEND_CFLAGS+= -MD ${DEPEND_MP} -MF.depend.${.TARGET}
|
DEPEND_CFLAGS+= -MD ${DEPEND_MP} -MF.depend.${.TARGET}
|
||||||
DEPEND_CFLAGS+= -MT${.TARGET}
|
DEPEND_CFLAGS+= -MT${.TARGET}
|
||||||
.if !defined(_meta_filemon)
|
.if !defined(_meta_filemon)
|
||||||
@ -229,7 +241,6 @@ CFLAGS+= ${${DEPEND_CFLAGS_CONDITION}:?${DEPEND_CFLAGS}:}
|
|||||||
.else
|
.else
|
||||||
CFLAGS+= ${DEPEND_CFLAGS}
|
CFLAGS+= ${DEPEND_CFLAGS}
|
||||||
.endif
|
.endif
|
||||||
.if !defined(_SKIP_READ_DEPEND)
|
|
||||||
.for __depend_obj in ${DEPENDFILES_OBJS}
|
.for __depend_obj in ${DEPENDFILES_OBJS}
|
||||||
.if ${MAKE_VERSION} < 20160220
|
.if ${MAKE_VERSION} < 20160220
|
||||||
.sinclude "${.OBJDIR}/${__depend_obj}"
|
.sinclude "${.OBJDIR}/${__depend_obj}"
|
||||||
@ -237,7 +248,6 @@ CFLAGS+= ${DEPEND_CFLAGS}
|
|||||||
.dinclude "${.OBJDIR}/${__depend_obj}"
|
.dinclude "${.OBJDIR}/${__depend_obj}"
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
.endif # !defined(_SKIP_READ_DEPEND)
|
|
||||||
.endif # !defined(_meta_filemon)
|
.endif # !defined(_meta_filemon)
|
||||||
|
|
||||||
# Always run 'make depend' to generate dependencies early and to avoid the
|
# Always run 'make depend' to generate dependencies early and to avoid the
|
||||||
|
Loading…
Reference in New Issue
Block a user