Copyright (C) 2000-2012 |
GNU Info (autoconf.info)autoconf InvocationUsing `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 automatically generated by info2www version 1.2.2.9 |