bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: question about autotools within GNU make itself


From: Paul Smith
Subject: Re: question about autotools within GNU make itself
Date: Tue, 16 Jan 2018 13:29:44 -0500

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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]