[Top][All Lists]

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

Re: problems with $(eval include...)

From: Paul D. Smith
Subject: Re: problems with $(eval include...)
Date: Fri, 27 Jun 2003 15:14:10 -0400

%% Fabio Alemagna <address@hidden> writes:

  fa> I know that, I've thought of it myself, but it just doesn't work
  fa> for autogenerated header files: say foo.o depends on foo.h, but
  fa> foo.h is autogenerated; now, make won't know about foo.h until
  fa> next time it's invoked, because the .d file doesn't exist the
  fa> first time it's invoked, and thus the foo.h rule won't be called
  fa> until the 2nd time I run make, which is really not what I want.

The autogeneration only works for leaf prerequisites, it's definitely
true.  Any prerequisite which is "internal" in the dependency graph
(that is, which is a built artifact instead of a source file) must be
declared explicitly.

In this case, you'd need to put foo.h into your makefile, but assuming
you didn't have that many autogenerated files this wouldn't be that

  fa> The other solution that I see would be for make to provide means
  fa> other than timestamps to check whether a target needs to be
  fa> rebuilt.

This is definitely on the todo list: as systems get faster it's more and
more infeasible to rely on timestamps.  Also, for some kinds of CM
systems (like ClearCase dynamic views for example) timestamps are
virtually useless, and hence GNU make is virtually useless.

However, changing GNU make from stateless to stateful in a robust and
portable manner needs a lot of thought.

 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

reply via email to

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