[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Possible bug: AC_USE_SYSTEM_EXTENSIONS ignores "AS_IF" conditionals
From: |
Eric Blake |
Subject: |
Re: Possible bug: AC_USE_SYSTEM_EXTENSIONS ignores "AS_IF" conditionals |
Date: |
Mon, 22 Sep 2014 08:51:52 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 |
On 09/20/2014 06:19 PM, David A. Wheeler wrote:
> I *think* that AC_USE_SYSTEM_EXTENSIONS has a bug; it seems to ignore
> conditionals.
Not a bug, but a feature.
>
> E.G., given this configure.ac:
> ====
> AC_PREREQ([2.63])
> AC_INIT([bug], [0.01])
> AC_CONFIG_HEADERS([config.h])
> AS_IF([test 0 = 1 ],
The whole POINT of AS_IF is to allow macros to hoist pre-req code that
must be run unconditionally to occur before the if statement.
> [AC_USE_SYSTEM_EXTENSIONS])
and AC_USE_SYSTEM_EXTENSIONS intentionally defines its body to be a
prerequisite that is hoisted outside the body of AS_IF or any other
macro that uses AC_REQUIRE. It is a feature that unconditional code is
hoisted like this.
> AC_OUTPUT
> ====
>
> The file "config.h" still enables extensions, even though the test is false.
That's because of the way the macros are designed to be expanded. You
are NOT writing:
if test 0 = 1; then
shell code to turn on conditionals
fi
rather, you are writing:
prereqs of any code embedded in the AS_IF, including the
AC_USE_SYSTEM_EXTENSIONS body that unconditionally turns on extensions
if test 0 = 1; then
any conditional remains (of which AC_USE_SYSTEM_EXTENSIONS has none)
fi
>
> I'm trying to conditionally use extensions like this:
> AS_IF([test "$enable_all_system_extensions" = "yes"],
> [AC_USE_SYSTEM_EXTENSIONS])
>
> Am I going about this the wrong way?
I don't think what you are asking for is possible. Either you want to
use extensions (and just use the macro) or you don't. I don't really
see a use case for wanting extensions on only some of the builds.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature