autoconf
[Top][All Lists]
Advanced

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

Re: AC_CHECK_HEADER won't use updates to CFLAGS/CPPFLAGS


From: Rhys Ulerich
Subject: Re: AC_CHECK_HEADER won't use updates to CFLAGS/CPPFLAGS
Date: Thu, 14 Aug 2008 11:34:38 -0500

Hi Ralf,

I got it reproduced.  The root cause is a side effect of calling
gl_ABSOLUTE_HEADER (
http://cvs.savannah.gnu.org/viewvc/*checkout*/gnulib/m4/absolute-header.m4?root=gnulib&content-type=text/plain)
after AC_CHECK_HEADER within my function definition.  The expansion of
gl_ABSOLUTE_HEADER causes my function look for the header before I've
modified CPPFLAGS.  The, after I modify CPPFLAGS, the cached "no" result is
being used.

Recreate:
1. Snag absolute_header.m4 from the link above
2. Pick your favorite Makefile.am.
3. Use this configure.ac:

AC_INIT(recreate, 0.0.1, address@hidden)
> AM_CONFIG_HEADER(config.h)
> AM_INIT_AUTOMAKE(1.9 -Wall -Werror foreign)
> AC_PREREQ([2.61])
>
> AC_DEFUN([AX_TRILINOS_BASE],[
>     if test -n "${TRILINOS_HOME}";
> then
> CPPFLAGS="-I${TRILINOS_HOME}/include $CPPFLAGS"
>     fi
>
>     AC_MSG_NOTICE([DEBUG: CPPFLAGS=${CPPFLAGS}])
>     AC_CHECK_HEADER([Trilinos_version.h],[found_header=yes])
>
>     if test "$found_header" = yes; then
>         gl_ABSOLUTE_HEADER([Trilinos_version.h])
>         AC_DEFINE(HAVE_TRILINOS,1,[Define if Trilinos is available])
>     else
>         AC_MSG_ERROR([Trilinos_version.h not found])
>     fi
> ])
> AX_TRILINOS_BASE
>
> AC_CONFIG_FILES([
>     Makefile
> ])
> AC_OUTPUT()
>
4. Invoke 'TRILINOS_HOME=somewhere ./configure'
5. Look at config.log and observe that the failed Trilinos_version check did
not use the DEBUG: CPPFLAGS=-Isomewhere value displayed in step #4.

To workaround the issue, choose any of:

   1. Remove gl_ABSOLUTE_HEADER([Trilinos_version.h]) from AX_TRILINOS_BASE
   2. Move the gl_ABSOLUTE_HEADER call outside of AX_TRILINOS_BASE into the
   toplevel configure.ac.
   3. Move the gl_ABSOLUTE_HEADER call into a separate function that isn't
   AX_TRILINOS_BASE.  But, you cannot call the new, separate function from
   within AX_TRILINOS_BASE otherwise you hit the same issue.
   4. Remove the function AX_TRILINOS_BASE and just dump the function's code
   into the main configure.ac file.

I'll modify my use of gl_ABSOLUTE_HEADER to get past this one.  I'll also
email address@hidden to report it.  A note in the gl_ABSOLUTE_HEADER
macro source might save someone else some time.

Thanks,
Rhys







On Thu, Aug 14, 2008 at 2:09 AM, Ralf Wildenhues <address@hidden>wrote:

> * Rhys Ulerich wrote on Thu, Aug 14, 2008 at 06:30:50AM CEST:
> >
> > How many chickens must I sacrifice for AC_CHECK_HEADER to notice that
> I've
> > modified CFLAGS/CPPFLAGS within my configure script?
>
> Please show your full configure.ac script, or, even better, a reduced
> one that still exposes this issue.
>
> Since AC_CHECK_HEADER apparently invokes g++, it seems you have an
> AC_LANG([C++]) somewhere, thus CFLAGS won't be used in favor of
> CXXFLAGS.  However, CPPFLAGS should still be used.
>
> Cheers,
> Ralf
>


reply via email to

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