diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/mk/bsd.dep.mk | 30 | ||||
-rw-r--r-- | share/mk/bsd.opts.mk | 9 | ||||
-rw-r--r-- | share/mk/local.meta.sys.mk | 1 |
3 files changed, 29 insertions, 11 deletions
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk index 2b9301e..78b2efb 100644 --- a/share/mk/bsd.dep.mk +++ b/share/mk/bsd.dep.mk @@ -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}:?${DEPEND_CFLAGS}:} .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 diff --git a/share/mk/bsd.opts.mk b/share/mk/bsd.opts.mk index e2c56ac..390909e 100644 --- a/share/mk/bsd.opts.mk +++ b/share/mk/bsd.opts.mk @@ -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> # diff --git a/share/mk/local.meta.sys.mk b/share/mk/local.meta.sys.mk index 21b9c16..207fb75 100644 --- a/share/mk/local.meta.sys.mk +++ b/share/mk/local.meta.sys.mk @@ -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},} |