On Tue, 2018-01-16 at 09:13 -0800, David Boyce wrote:
> It looks like the touching not only destroys incremental build
> capability (expected and not an issue) but toggles the makefile into
> "developer mode".
> 
> I'm not looking for any changes here, just wondering whether anyone
> knows which file relationships must be preserved to prevent this? I'm
> hoping a few "find" predicates can resolve this.

Correct, this is an autotools thing.

The automake generated makefiles know how to rebuild Makefile.in,
Makefile, configure, etc. based on the out-of-date-ness of the base
files such as configure.ac and Makefile.am.  So if those files are
updated, then the makefile will attempt to re-run those tools and
regenerate their output.  This fails if you don't have them installed.

When we create the release tarball for GNU make, the timestamps
provided there are set up properly so that the generated files are
newer than their prerequisites, so that make doesn't try to rebuild
them.  But, if you modify all the timestamps such that this ordering is
lost then make may try to rebuild them.

You need avoid updating the timestamps on the base files, or at least
update them first, then update everything else so that they still have
a newer timestamp.

Unfortunately, this list is not simple to come up with.  It would
include for example, all the files in the config subdirectory,
acinclude.m4, configure.ac, all the Makefile.am files, and maybe
others.


I think if you really wanted to pursue this, it might be worthwhile
creating a little script that updated the timestamps on all files to
still have their relative timestamp relationship, but just newer.  For
example you could sort all the files in the directories by time last
modified, oldest to newest, then touch them in that order.

_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to