On Mon, 2012-04-02 at 09:57 -0400, Lane Schwartz wrote: > 1) "A target is out of date if it does not exist or if it is older than any > of the prerequisites (by comparison of last-modification times)." > > NEW 2) "All computation of prerequisite timestamps are performed prior to > the execution of any make rule."
Except, that's not really true. The timestamp caching facility of GNU make causes the real behavior to be difficult to define in situations where the makefile doesn't accurately describe what the recipes really do. The actual behavior depends on which files are added to the cache, and when: they are not all added up-front. It's just helpful to think about it as if they were because if you do, then your makefile will definitely be correct. If the makefile does completely describe the results of the recipes then it all works fine. If not, the behavior is hard to quantify. That's why I've considered removing the cache. However, the cache can be a performance win, particularly in the common "do nothing" (or at least "do very little") cases. Maybe it should be made optional, so you can get slower but more understandable (in the case of incomplete makefile definitions) behavior, or else faster behavior but your makefile must be well-formed (as today). -- ------------------------------------------------------------------------------- Paul D. Smith <[email protected]> Find some GNU make tips at: http://www.gnu.org http://make.mad-scientist.net "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Help-make mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-make
