Re: Use pipe and sed in configure.ac

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

 



On 10 Feb 2011, at 10:39, Lyre <4179e1@xxxxxxxxx> wrote:

> I tried to exact an option from php-config using:
> 
> php-config --configure-options | sed -n
> 's|.*--with-config-file-scan-dir=\([^ ]*\).*|\1|p'
> 
> It works on shell, and outputs "/etc/php5/conf.d/" on opensuse.
> 
> And I tired it in configure.ac, as following:
> 
> PHPINC=`php-config --includes`
> PHPCDIR=`php-config --configure-options | sed -n
> 's|.*--with-config-file-scan-dir=\([^ ]*\).*|\1|p'`
> 
> AC_SUBST([PHPINC])
> AC_SUBST([PHPCDIR])
> 
> After subsitution in Makefile, the PHPCDIR is emptyï meanwhile PHPINC get
> the correct result.
> 
> What' the correct way to use it?

Autoconf turns your configure.ac specification in a configure shell script by running
it through GNU M4, with the M4 quote characters set to [ and ]. So M4 thinks you
are telling it not to expand [^ ] in the sed match expression, and after doing that, it
then throws those quote marks away.

If you search for the expanded text in the configure script, you'll see something
like this:

    PHPCDIR=`php-config --configure-options | sed -n \
      's|.*--with-config-file-scan-dir=\(^ *\).*|\1|p'`

Note the missing brackets, which means the sed match expression no longer
works as expected.

A rule of thumb is that you need to M4 quote sections of raw shell code in the
configure.ac file if you don't want them to remain unmolested in the generated
configure script. Things get a little more complicated if you are writing Autoconf
macros, but in this case doubling up the [ and ] in configure.ac should work:

    PHPCDIR=`php-config --configure-options | sed -n \
      's|.*--with-config-file-scan-dir=\([[^ ]]*\).*|\1|p'`

And you can search the generated configure script for PHPCDIR to check!

There are some other M4 syntaxes you need to watch out for too, but I'm pretty
sure they're all covered by the info manuals.

HTH,
Gary
-- 
Gary V. Vaughan (gary@xxxxxxx)
_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf



[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux