autoconf
[Top][All Lists]
Advanced

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

Re: confdefs.h not being included by AC_LANG_SOURCE()


From: Ralf Wildenhues
Subject: Re: confdefs.h not being included by AC_LANG_SOURCE()
Date: Tue, 2 Mar 2010 22:35:26 +0100
User-agent: Mutt/1.5.20 (2009-10-28)

* Brian J. Murrell wrote on Tue, Mar 02, 2010 at 09:51:08PM CET:
> On Tue, 2010-03-02 at 07:00 +0100, Ralf Wildenhues wrote: 
> > to your configure.ac before the use of LB_LINUX_COMPILE_IFELSE
> > and see whether your problem goes away that way.
> 
> Here's my reproducer:
> 
> AC_INIT([pkg], [1.0])

> AC_DEFUN([LB_LINUX_CONFTEST],
> [cat >conftest.c <<_ACEOF
> $1
> _ACEOF
> ])

> AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
> [m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl
[...]
> LB_LINUX_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <linux/thread_info.h>
>         #if THREAD_SIZE < 8192
>         #error "stack size < 8192"
>         #endif
> ]],[],[echo foo])])

So you use Autoconf's AC_LANG_SOURCE but your own version of
AC_LANG_CONFTEST, and the fact that an optimization changed
the latter to do part of the work of the former in Autoconf,
but your variant of the *CONFTEST macro doesn't do that, breaks
your code, and is the regression.

First off, unless your real LB_LINUX_CONFTEST looks differently,
you should easily be able to work around the issue by something
like
  AC_DEFUN([LB_LINUX_CONFTEST], m4_defn([AC_LANG_CONFTEST]))

which I think should work with both old and new Autoconf.

Second, I do think this is a regression, as our documentation
pretty clearly states that AC_LANG_SOURCE is the one expanding
all the AC_DEFINEs seen so far.  I do however also think that
the old code was ugly and hackish.  Not sure whether it would
be better to go back, or go forward and announce the API change.

But what I do know is that we need better macro coverage here.

Cheers,
Ralf




reply via email to

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