tags:

views:

164

answers:

2

The following code from my configuration.ac file does not work (note the nested square brackets with [default=no]):

AC_ARG_ENABLE(debug,
    [  --enable-debug          build with debugging support [default=no].],
    [DEBUG="$enableval"],
    [DEBUG="no"]
)

How can I escape those brackets?

A: 

use AC_HELP_STRING

aaa
Thanks (that is definitely cleaner) but still the same problem. In <<AS_HELP_STRING([--enable-debug],[build with debugging support [default=no].])>> the "[" and "]" are missing from output.
Why the insistence on square brackets in the output? Use parentheses; it makes your life easier.
Jonathan Leffler
For consistency's sake, because other packages I'm using have square brackets in their output :(
`AC_HELP_STRING` been deprecated about half a decade ago. Use `AS_HELP_STRING`.
ndim
+3  A: 

Found it! From this tutorial:

M4 arguments are quoted with [ and ]. There is NO WAY to escape these, however, you have several options if you wish to insert ['s or ]'s:

  1. Use a `Quadrigaph'. @<:@ gives you [ and @>:@ gives you ].
  2. Balance your quotes. M4 will turn [[]] in to []. Beware of using this in arguments to macros. Sometimes, you need to double quote as well ([[[]]]).
  3. Change the quoting using: changequote(<<,>>) to change the quoting to << and >>. The autoconf documentation (rightly, in my opinion) warns against the (over) use of this, since it can lead to unexpected results.
  4. Avoid [ and ] where ever possible. This is my personal choice.

My new code is therefore:

AC_ARG_ENABLE(debug,
    AS_HELP_STRING(
        [--enable-debug],
        [build with debugging symbols @<:@default=no@:>@]),
    [enable_debug="$enableval"],
    [enable_debug="no"]
)