Node:Making configure Scripts, Next:Setup, Previous:The GNU build system, Up:Top
configure
ScriptsThe 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:
Makefile
files, one in each subdirectory of the
package (see Makefile Substitutions);
#define
directives (see Configuration Headers);
config.status
that, when run, will recreate
the files listed above (see config.status Invocation);
config.cache
(created when using configure --config-cache
) that
saves the results of running many of the tests (see Cache Files);
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 will 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 ---'
configure.ac
writing
configure
scripts