|
3 Making configure Scripts
The configuration scripts that Autoconf produces are by convention
called configure. When run, configure creates several
files, replacing configuration parameters in them with appropriate
values. The files that configure creates are:
- one or more Makefile files, usually one in each subdirectory of the
package (see Makefile Substitutions);
- optionally, a C header file, the name of which is configurable,
containing
#define directives (see Configuration Headers);
- a shell script called config.status that, when run, recreates
the files listed above (see config.status Invocation);
- an optional shell script normally called config.cache
(created when using ‘configure --config-cache’) that
saves the results of running many of the tests (see Cache Files);
- a file called config.log containing any messages produced by
compilers, to help debugging if configure makes a mistake.
To create a configure script with Autoconf, you need to write an
Autoconf input file configure.ac (or configure.in) and run
autoconf on it. If you write your own feature tests to
supplement those that come with Autoconf, you might also write files
called aclocal.m4 and acsite.m4. If you use a C header
file to contain #define directives, you might also run
autoheader, and you can distribute the generated file
config.h.in with the package.
Here is a diagram showing how the files that can be used in
configuration are produced. Programs that are executed are suffixed by
‘*’. Optional files are enclosed in square brackets (‘[]’).
autoconf and autoheader also read the installed Autoconf
macro files (by reading autoconf.m4).
Files used in preparing a software package for distribution:
your source files --> [autoscan*] --> [configure.scan] --> configure.ac
configure.ac --.
| .------> autoconf* -----> configure
[aclocal.m4] --+---+
| `-----> [autoheader*] --> [config.h.in]
[acsite.m4] ---'
Makefile.in -------------------------------> Makefile.in
Files used in configuring a software package:
.-------------> [config.cache]
configure* ------------+-------------> config.log
|
[config.h.in] -. v .-> [config.h] -.
+--> config.status* -+ +--> make*
Makefile.in ---' `-> Makefile ---'
|
|