bug-autoconf
[Top][All Lists]
Advanced

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

Re: bad m4 quotation?


From: Stepan Kasal
Subject: Re: bad m4 quotation?
Date: Wed, 29 Mar 2006 12:57:10 +0200
User-agent: Mutt/1.4.1i

Hello Ralf,

On Tue, Mar 28, 2006 at 03:36:25PM +0200, Ralf Wildenhues wrote:
> > As we both know, the reason is that the first parameter of
> > AC_CONFIG_FOOS is split by whitespace before any expansion.

this was also true for Autoconf 2.59.

> Backwards compatible to what?

To previous version, of course.
Let me make some experiments with Autoconf 2.59:

Your overquoted example:

$ cat configure.ac
AC_INIT(a,1,b)
AC_DEFUN([FOO],
[AC_CONFIG_FILES([m4_default([$1], [foobar])])])
FOO
FOO([baz])
AC_OUTPUT
$ ../autoconf
configure.ac:4: /usr/bin/m4: Warning: Too few arguments to built-in 
`m4_bpatsubst'
autom4te: /usr/bin/m4 failed with exit status: 1
$

If I remove the extra quotes around m4_default, things work.

And what about the `ifelse' case?  Let's try this:

$ cat configure.ac
AC_INIT(a,1,b)
AC_DEFUN([FOO],
[AC_CONFIG_FILES([ifelse([$1],,[foobar],[$1])])])
FOO
FOO([baz])
AC_OUTPUT
$ ../autoconf
$

Wow!  It worked!  But please note that the real reason is that there are
no spaces in the argument list of `ifelse'.

And the generated configure is corrupted:
$ grep foobar configure
          ac_config_files="$ac_config_files ifelse([],,[foobar],[])"
          ac_config_files="$ac_config_files ifelse([baz],,[foobar],[baz])"
  "foobar" ) CONFIG_FILES="$CONFIG_FILES foobar" ;;
$

 
> It breaks the AC_PREFIX_CONFIG_H macro.

Well I haven't tried this macro specifically.
But because of the above, I believe that things are reasonably backward
compatible.  In the examples above, you have to use m4_default/m4_if
unquoted and it was this way in 2.59, too.

Hope this clarifies it,
        Stepan




reply via email to

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