autoconf
[Top][All Lists]
Advanced

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

Re: Autoconf speedup


From: Tom Tromey
Subject: Re: Autoconf speedup
Date: 22 Apr 2002 13:02:43 -0600

>>>>> "Zdenek" == Zdenek Kabelac <address@hidden> writes:

Zdenek> I'm of course using config.cache - so that's why I'm complaing about
Zdenek> Makefile creation - as the time of makefile processing is 
Zdenek> aproximately 3 times as big as the whole process of detectecion.
Zdenek> That's why I do believe it's really a problem which shuold be solved.

I agree.  Automake puts a strain on config.status that hand-written
Makefile.in's do not.  Largely I think that is because Automake puts
*all* discovered variables into every Makefile.in.

I know of one way we could fix this problem.  I think it will take
work on both Autoconf and Automake.  The basic idea is not to run the
transforms on every Makefile, but instead try to run them just once.

First, have Autoconf generate a single file that has all SUBSTs
expanded:

    foo = <value of foo>
    prefix = <value of prefix>
    ...

This could be generated quite quickly.

Then have each resulting Makefile include this master file.  This
could be done by make's `include' feature or by using `cat' to
actually copy the variables into the Makefile.

Automake must rewrite the user's Makefile.am code to change @foo@ to $(foo).
This ensures there are no rewrites in the generated Makefile.in.
This will break compatibility :-(.
In fact it will mean removing an existing feature (using variable
names with @...@ in them).
So perhaps this mode would have to be an option, or specially request.
Or, just part of a major release where compatibility is not guaranteed.

Finally, we'll have to think of a new way to implement conditionals.
The current approach will no longer work.  One idea would be to use
awk at config.status time (or a very specialized sed script) to
include or omit appropriate parts of Makefile.in.  This would probably
be faster than the current approach.

Comments?

Tom



reply via email to

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