svn commit: r305634 - head/share/mk
Simon J. Gerraty
sjg at juniper.net
Sat Sep 10 07:12:29 UTC 2016
Bryan Drewery <bdrewery at freebsd.org> wrote:
> > +# some targets involve old pre-built targets
> > +# ignore mtime of shell
> > +# and mtime of makefiles does not matter in meta mode
> > +.MAKE.META.IGNORE_PATHS += \
> > + ${MAKEFILE} \
> > + ${SHELL} \
> > + ${SYS_MK_DIR}
>
> I think it could be problematic to ignore *.mk changes. The build
If you're not concerned with build optimization,
this can be disabled - but pretty much any sub-make for which there is a
.meta file will be out-of-date by any changed to *.mk
> commands may stay the same, but targets could grow new dependencies. If
> those dependencies are already "met" then meta mode won't reconsider them.
I'm not sure how easy it is to accomplish that situation.
> Consider:
> Build 1:
> bar:
> touch dep
> touch bar
>
> foo:
> touch foo
>
> all: bar foo
>
> In the first build, all generates dep, bar and foo.
>
> Then the code is changed to:
>
> bar:
> touch bar
>
> dep:
> touch notmade
> touch dep
>
> foo: dep
> touch foo
>
> all: foo bar
>
> Now in the second build, all finds bar command changes and rebuilds,
> finds foo command is the same and that dep is already satisfied from the
> last build. So 'notmade' is never made.
Actually given you have missing-meta=yes
target dep would be remade, either because there is no .meta file, or
because its commands changed.
Thus notmade should be.
More information about the svn-src-all
mailing list