Go to the first, previous, next, last section, table of contents.

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
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 (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 first, previous, next, last section, table of contents.