Using `autoconf' to Create `configure'
======================================
To create `configure' from `configure.ac', run the `autoconf'
program with no arguments. `autoconf' processes `configure.ac' with
the `m4' macro processor, using the Autoconf macros. If you give
`autoconf' an argument, it reads that file instead of `configure.ac'
and writes the configuration script to the standard output instead of
to `configure'. If you give `autoconf' the argument `-', it reads from
the standard input instead of `configure.ac' and writes the
configuration script to the standard output.
The Autoconf macros are defined in several files. Some of the files
are distributed with Autoconf; `autoconf' reads them first. Then it
looks for the optional file `acsite.m4' in the directory that contains
the distributed Autoconf macro files, and for the optional file
`aclocal.m4' in the current directory. Those files can contain your
site's or the package's own Autoconf macro definitions (Note:Writing
Autoconf Macros, for more information). If a macro is defined in
more than one of the files that `autoconf' reads, the last definition
it reads overrides the earlier ones.
`autoconf' accepts the following options:
`--help'
`-h'
Print a summary of the command line options and exit.
`--version'
`-V'
Print the version number of Autoconf and exit.
`--verbose'
`-v'
Report processing steps.
`--debug'
`-d'
Don't remove the temporary files.
`--force'
`-f'
Remake `configure' even if newer than its input files.
`--include=DIR'
`-I DIR'
Also look for input files in DIR. Multiple invocations
accumulate. Directories are browsed from last to first.
`--output=FILE'
`-o FILE'
Save output (script or trace) to FILE. The file `-' stands for
the standard output.
`--warnings=CATEGORY'
`-W CATEGORY'
Report the warnings related to CATEGORY (which can actually be a
comma separated list). Note:Reporting Messages, macro
`AC_DIAGNOSE', for a comprehensive list of categories. Special
values include:
`all'
report all the warnings
`none'
report none
`error'
treats warnings as errors
`no-CATEGORY'
disable warnings falling into CATEGORY
Warnings about `syntax' are enabled by default, and the environment
variable `WARNINGS', a comma separated list of categories, is
honored. `autoconf -W CATEGORY' will actually behave as if you had
run:
autoconf --warnings=syntax,$WARNINGS,CATEGORY
If you want to disable `autoconf''s defaults and `WARNINGS', but
(for example) enable the warnings about obsolete constructs, you
would use `-W none,obsolete'.
`autoconf' displays a back trace for errors, but not for warnings;
if you want them, just pass `-W error'. For instance, on this
`configure.ac':
AC_DEFUN([INNER],
[AC_TRY_RUN([exit (0)])])
AC_DEFUN([OUTER],
[INNER])
AC_INIT
OUTER
you get:
$ autoconf -Wcross
configure.ac:8: warning: AC_TRY_RUN called without default \
to allow cross compiling
$ autoconf -Wcross,error
configure.ac:8: error: AC_TRY_RUN called without default \
to allow cross compiling
acgeneral.m4:3044: AC_TRY_RUN is expanded from...
configure.ac:2: INNER is expanded from...
configure.ac:5: OUTER is expanded from...
configure.ac:8: the top level
`--trace=MACRO[:FORMAT]'
`-t MACRO[:FORMAT]'
Do not create the `configure' script, but list the calls to MACRO
according to the FORMAT. Multiple `--trace' arguments can be used
to list several macros. Multiple `--trace' arguments for a single
macro are not cumulative; instead, you should just make FORMAT as
long as needed.
The FORMAT is a regular string, with newlines if desired, and
several special escape codes. It defaults to `$f:$l:$n:$%'; see
below for details on the FORMAT.
`--initialization'
`-i'
By default, `--trace' does not trace the initialization of the
Autoconf macros (typically the `AC_DEFUN' definitions). This
results in a noticeable speedup, but can be disabled by this
option.
It is often necessary to check the content of a `configure.ac' file,
but parsing it yourself is extremely fragile and error-prone. It is
suggested that you rely upon `--trace' to scan `configure.ac'.
The FORMAT of `--trace' can use the following special escapes:
`$$'
The character `$'.
`$f'
The filename from which MACRO is called.
`$l'
The line number from which MACRO is called.
`$d'
The depth of the MACRO call. This is an M4 technical detail that
you probably don't want to know about.
`$n'
The name of the MACRO.
`$NUM'
The NUMth argument of the call to MACRO.
`$@'
`$SEP@'
`${SEPARATOR}@'
All the arguments passed to MACRO, separated by the character SEP
or the string SEPARATOR (`,' by default). Each argument is
quoted, i.e. enclosed in a pair of square brackets.
`$*'
`$SEP*'
`${SEPARATOR}*'
As above, but the arguments are not quoted.
`$%'
`$SEP%'
`${SEPARATOR}%'
As above, but the arguments are not quoted, all new line
characters in the arguments are smashed, and the default separator
is `:'.
The escape `$%' produces single-line trace outputs (unless you put
newlines in the `separator'), while `$@' and `$*' do not.
For instance, to find the list of variables that are substituted,
use:
$ autoconf -t AC_SUBST
configure.ac:2:AC_SUBST:ECHO_C
configure.ac:2:AC_SUBST:ECHO_N
configure.ac:2:AC_SUBST:ECHO_T
More traces deleted
The example below highlights the difference between `$@', `$*', and
*$%*.
$ cat configure.ac
AC_DEFINE(This, is, [an
[example]])
$ autoconf -t 'AC_DEFINE:@: $@
*: $*
$: $%'
@: [This],[is],[an
[example]]
*: This,is,an
[example]
$: This:is:an [example]
The FORMAT gives you a lot of freedom:
$ autoconf -t 'AC_SUBST:$$ac_subst{"$1"} = "$f:$l";'
$ac_subst{"ECHO_C"} = "configure.ac:2";
$ac_subst{"ECHO_N"} = "configure.ac:2";
$ac_subst{"ECHO_T"} = "configure.ac:2";
More traces deleted
A long SEPARATOR can be used to improve the readability of complex
structures, and to ease its parsing (for instance when no single
character is suitable as a separator)):
$ autoconf -t 'AM_MISSING_PROG:${|:::::|}*'
ACLOCAL|:::::|aclocal|:::::|$missing_dir
AUTOCONF|:::::|autoconf|:::::|$missing_dir
AUTOMAKE|:::::|automake|:::::|$missing_dir
More traces deleted