Bryan Drewery <bdrew...@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.
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to