[Top][All Lists]

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

Re: Problem using AC_LANG_PROGRAM with AC_EGREP_CPP

From: Eric Blake
Subject: Re: Problem using AC_LANG_PROGRAM with AC_EGREP_CPP
Date: Mon, 30 Mar 2009 11:08:30 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20090302 Thunderbird/ Mnenhy/

Hash: SHA1

According to Allan Caffee on 3/30/2009 8:12 AM:
>>>> My invocation of AC_EGREP_CPP looks like this:
>>>>         AC_EGREP_CPP([HAVE_GL_GLU_H], [AC_LANG_PROGRAM([[foo]], [[bar]])],
>>>>                      [OPENVRML_HAVE_GL_GLU_H=1],
>>>>                      [OPENVRML_HAVE_GL_GLU_H=0])
>>> In isolation, I don't see any quoting problems with this example.  But I'm
>>> almost certain you didn't copy and paste from your, so maybe
>>> in the rewrite for this email, you changed the quoting?
> AC_EGREP_CPP([HAVE_GL_GLU_H], AC_LANG_PROGRAM([[foo]], [[bar]]),
> I'm no Autoconf expert but isn't the way it was presented before
> overquoted?  IIRC one layer of quoting is removed for each macro
> expansion.  Doesn't this mean that quoting AC_LANG_PROGRAM would cause
> it to be passed to AC_EGREP_CPP literally?  Perhaps I'm
> misunderstanding.

Ouch.  AC_EGREP_CPP double-quotes its arguments, putting it in the same
category as other macros like AC_TRY_COMPILE which have been marked
obsolete because double-quoting is a bad default.  AC_PREPROC_IFELSE has
saner semantics, but the source code reveals that indeed, you have to
underquote your second argument to AC_EGREP_CPP since AC_EGREP_CPP
overquotes it under the hood.  I'm not sure what to do about this besides
improving the documentation, marking AC_EGREP_CPP as obsolete, and
providing a better replacement that doesn't need quite as much effort as
AC_PREPROC_IFELSE to make grepping preprocessor output easy.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at
Comment: Using GnuPG with Mozilla -


reply via email to

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