On 9/9/16 5:37 PM, Simon J. Gerraty wrote: > 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.
Can you at least wrap it in something like .if !defined(META_CONSIDER_MK_FILES) ? > >> 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. > Good point. -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature