[cairo] Automake conditional variable problem...
james at daa.com.au
Sun Mar 21 16:58:41 PST 2004
On 20/03/2004 6:25 AM, Carlos Noguera wrote:
>I'm in the process of creating some CVS ebuils for Gentoo, and in the
>course of building the Cairo and libglc CVS trees (with the GLX and
>shading patches) I've come across some issues.
>Aparently automake (version 1.8.2) really doesn't like the conditional
>variable assignments pkg-config generates for these builds. The
>autogen.sh dies with a "automake does not support conditional definition
>of ... in ...". (eg. libglc_glx_extra_dist in EXTRA_DIST)
>So far I've gotten around these by explicitly changing the definitions
>to what I want in the Makefiles, but this isn't the "right" way to do
>Does anyone on this list have any suggestions? I'm sorry if the question
>is simple or stupid, but I'm just starting out... :-/
It indicates a bug in the Cairo configure scripts.
AM_CONDITIONAL() should never be called from within a branch of an "if"
statement or similar. Instead, it should be placed outside of the if
statement, using an appropriate condition.
The reason why automake is a bit more strict about this in newer
versions is that it can cause hard to debug build problems. It is quite
easy to see why when you look at how it is implemented.
If you call AM_CONDITIONAL(foo, ...) with a true expression, it will
substitute @FOO_TRUE@ with "" in the makefiles, and @FOO_FALSE@ with
"#". If called with a false expression, @FOO_TRUE@ will be substituted
with "#" and @FOO_FALSE@ with "". This way, one section of the makefile
will be commented out and the other will be active.
However, if the AM_CONDITIONAL doesn't get run when configure executes,
both @FOO_TRUE@ and @FOO_FALSE@ will both be substituted as "" and the
two branches of the makefile will be active at the same time.
So a good rule of thumb is to never put an AM_CONDITIONAL() call inside
an if statement.
Email: james at daa.com.au
More information about the cairo