Recreating a Configuration
**************************
The `configure' script creates a file named `config.status' which
describes which configuration options were specified when the package
was last configured. This file is a shell script which, if run, will
recreate the same configuration.
You can give `config.status' the `--recheck' option to update
itself. This option is useful if you change `configure', so that the
results of some tests might be different from the previous run. The
`--recheck' option re-runs `configure' with the same arguments you used
before, plus the `--no-create' option, which prevent `configure' from
running `config.status' and creating `Makefile' and other files, and
the `--no-recursion' option, which prevents `configure' from running
other `configure' scripts in subdirectories. (This is so other
`Makefile' rules can run `config.status' when it changes; Note:Automatic Remaking, for an example).
`config.status' also accepts the options `--help', which prints a
summary of the options to `config.status', and `--version', which
prints the version of Autoconf used to create the `configure' script
that generated `config.status'.
`config.status' checks several optional environment variables that
can alter its behavior:
- Variable: CONFIG_SHELL
The shell with which to run `configure' for the `--recheck'
option. It must be Bourne-compatible. The default is `/bin/sh'.
- Variable: CONFIG_STATUS
The file name to use for the shell script that records the
configuration. The default is `./config.status'. This variable is
useful when one package uses parts of another and the `configure'
scripts shouldn't be merged because they are maintained separately.
The following variables provide one way for separately distributed
packages to share the values computed by `configure'. Doing so can be
useful if some of the packages need a superset of the features that one
of them, perhaps a common library, does. These variables allow a
`config.status' file to create files other than the ones that its
`configure.in' specifies, so it can be used for a different package.
- Variable: CONFIG_FILES
The files in which to perform `@VARIABLE@' substitutions. The
default is the arguments given to `AC_OUTPUT' in `configure.in'.
- Variable: CONFIG_HEADERS
The files in which to substitute C `#define' statements. The
default is the arguments given to `AC_CONFIG_HEADER'; if that
macro was not called, `config.status' ignores this variable.
These variables also allow you to write `Makefile' rules that
regenerate only some of the files. For example, in the dependencies
given above (Note:Automatic Remaking), `config.status' is run twice
when `configure.in' has changed. If that bothers you, you can make
each run only regenerate the files for that rule:
config.h: stamp-h
stamp-h: config.h.in config.status
CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
echo > stamp-h
Makefile: Makefile.in config.status
CONFIG_FILES=Makefile CONFIG_HEADERS= ./config.status
(If `configure.in' does not call `AC_CONFIG_HEADER', there is no need
to set `CONFIG_HEADERS' in the `make' rules.)