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