Go to the previous, next section.

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; see section 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

@evindex 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

@evindex 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

@evindex 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

@evindex 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 (see section 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.)

Go to the previous, next section.