[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#7990: Quoting problem with AM_COND_IF
From: |
Stefano Lattarini |
Subject: |
bug#7990: Quoting problem with AM_COND_IF |
Date: |
Sat, 5 Feb 2011 22:13:47 +0100 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
Hello Dennis.
Thanks for the report, but what you're describing is indeed a user
error, not an automake/autoconf bug. I'm thus closing this bug
report as invalid.
Details follow ...
On Saturday 05 February 2011, Dennis Schridde wrote:
> When I write configure.ac as quoted below and run:
> aclocal -I m4
> autoconf
> automake
> the latter will respond with:
> "configure.ac:7: missing m4 quoting, macro depth 2"
>
That's because you're underquoting the call to `AM_COND_IF'.
> Changing the AS_IF line to:
> AS_IF([test -x /bin],[
> fixes that. (Of course also insert the obvious ']')
>
It would be better to fix the `AM_COND_IF' line. See below.
> When I then run ./configure (after running autoconf and automake again), I
> get
> this error:
> ./configure: line 2428: syntax error near unexpected token `('
>
That's because you're underquoting the call to `AC_MSG_ERROR'.
> The cause is that the error message is cut off at (before) the ',' comma.
> This can be fixed by changing the AM_COND_IF line to:
> AM_COND_IF([CONDITION],,[
> (Of course also insert the obvious ']')
>
It would be better to fix the `AC_MSG_ERROR' line. See below.
> Since other macros defined by autoconf and automake do not have to be quoted
> in this way,
>
Yes, they do. See:
<http://www.gnu.org/software/autoconf/manual/html_node/Quotation-Rule-Of-Thumb.html>
and for more details:
<http://www.gnu.org/software/autoconf/manual/html_node/M4-Quotation.html>
> I assume that there is a quoting problem specific to AM_COND_IF.
> I.e. AM_COND_IF does not quote its arguments hard enough, or something
> similar.
>
No, the underquoting is in your macro calls.
>
> --- configure.ac ---
> AC_INIT([test], [0])
> AC_CONFIG_MACRO_DIR([m4])
> AM_INIT_AUTOMAKE
>
> AM_CONDITIONAL([CONDITION],[test -x /tmp])
> AS_IF([test -x /bin],
> AM_COND_IF([CONDITION],,
> AC_MSG_ERROR([comma separated, message])
> )
> )
>
> AC_OUTPUT([Makefile])
>
FWIW, I'd write this as:
AC_INIT([test], [0])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE(foreign)
AM_CONDITIONAL([CONDITION],[test -x /tmp])
AS_IF([test -x /bin],
[AM_COND_IF([CONDITION], [],
[AC_MSG_ERROR([comma separated, message])])])
AC_OUTPUT([Makefile])
Sorry for the curt answer, but I'm in a hurry right now.
HTH,
Stefano