GNU Info

Info Node: (autoconf.info)Introduction

(autoconf.info)Introduction


Next: The GNU build system Prev: Top Up: Top
Enter node , (file) or (file)node

Introduction
************

 A physicist, an engineer, and a computer scientist were discussing the
     nature of God.  "Surely a Physicist," said the physicist, "because
         early in the Creation, God made Light; and you know, Maxwell's
  equations, the dual nature of electromagnetic waves, the relativistic
           consequences..." "An Engineer!," said the engineer, "because
before making Light, God split the Chaos into Land and Water; it takes a
      hell of an engineer to handle that big amount of mud, and orderly
           separation of solids from liquids..." The computer scientist
  shouted: "And the Chaos, where do you think it was coming from, hmm?"

                                                            --Anonymous

   Autoconf is a tool for producing shell scripts that automatically
configure software source code packages to adapt to many kinds of
UNIX-like systems.  The configuration scripts produced by Autoconf are
independent of Autoconf when they are run, so their users do not need
to have Autoconf.

   The configuration scripts produced by Autoconf require no manual user
intervention when run; they do not normally even need an argument
specifying the system type.  Instead, they individually test for the
presence of each feature that the software package they are for might
need.  (Before each check, they print a one-line message stating what
they are checking for, so the user doesn't get too bored while waiting
for the script to finish.)  As a result, they deal well with systems
that are hybrids or customized from the more common UNIX variants.
There is no need to maintain files that list the features supported by
each release of each variant of UNIX.

   For each software package that Autoconf is used with, it creates a
configuration script from a template file that lists the system features
that the package needs or can use.  After the shell code to recognize
and respond to a system feature has been written, Autoconf allows it to
be shared by many software packages that can use (or need) that feature.
If it later turns out that the shell code needs adjustment for some
reason, it needs to be changed in only one place; all of the
configuration scripts can be regenerated automatically to take advantage
of the updated code.

   The Metaconfig package is similar in purpose to Autoconf, but the
scripts it produces require manual user intervention, which is quite
inconvenient when configuring large source trees.  Unlike Metaconfig
scripts, Autoconf scripts can support cross-compiling, if some care is
taken in writing them.

   Autoconf does not solve all problems related to making portable
software packages--for a more complete solution, it should be used in
concert with other GNU build tools like Automake and Libtool.  These
other tools take on jobs like the creation of a portable, recursive
`Makefile' with all of the standard targets, linking of shared
libraries, and so on.  Note: The GNU build system, for more
information.

   Autoconf imposes some restrictions on the names of macros used with
`#if' in C programs (Note: Preprocessor Symbol Index).

   Autoconf requires GNU M4 in order to generate the scripts.  It uses
features that some UNIX versions of M4, including GNU M4 1.3, do not
have.  You must use version 1.4 or later of GNU M4.

   Note: Autoconf 1, for information about upgrading from version 1.
Note: History, for the story of Autoconf's development.  Note:
Questions, for answers to some common questions about Autoconf.

   See the Autoconf web page(1) for up-to-date information, details on
the mailing lists, pointers to a list of known bugs, etc.

   Mail suggestions to the Autoconf mailing list <autoconf@gnu.org>.

   Bug reports should be preferably submitted to the Autoconf Gnats
database(2), or sent to the Autoconf Bugs mailing list
<bug-autoconf@gnu.org>.  If possible, first check that your bug is not
already solved in current development versions, and that it has not
been reported yet.  Be sure to include all the needed information and a
short `configure.ac' that demonstrates the problem.

   Autoconf's development tree is accessible via CVS; see the Autoconf
web page for details.  There is also a CVSweb interface to the Autoconf
development tree(3).  Patches relative to the current CVS version can
be sent for review to the Autoconf Patches mailing list
<autoconf-patches@gnu.org>.

   Because of its mission, Autoconf includes only a set of often-used
macros that have already demonstrated their usefulness.  Nevertheless,
if you wish to share your macros, or find existing ones, see the
Autoconf Macro Archive(4), which is kindly run by Peter Simons
<simons@computer.org>.

   ---------- Footnotes ----------

   (1) Autoconf web page,
<http://www.gnu.org/software/autoconf/autoconf.html>.

   (2) Autoconf Gnats database,
<http://sources.redhat.com/cgi-bin/gnatsweb.pl?database=autoconf>.

   (3) CVSweb interface to the Autoconf development tree,
<http://subversions.gnu.org/cgi-bin/cvsweb/autoconf/>.

   (4) Autoconf Macro Archive,
<http://www.gnu.org/software/ac-archive/>.


automatically generated by info2www version 1.2.2.9