DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(autocf21.info.gz) Introduction

Info Catalog (autocf21.info.gz) Top (autocf21.info.gz) Top (autocf21.info.gz) Making configure Scripts
 
 1 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 electro-magnetic
      waves, the relativist 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 test for the presence of each
 feature that the software package they are for might need individually.
 (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.
 
    There are several jobs related to making portable software packages
 that Autoconf currently does not do.  Among these are automatically
 creating `Makefile' files with all of the standard targets, and
 supplying replacements for standard library functions and header files
 on systems that lack them.  Work is in progress to add those features in
 the future.
 
    Autoconf imposes some restrictions on the names of macros used with
 `#ifdef' in C programs ( Preprocessor Symbol Index).
 
    Autoconf requires GNU `m4' in order to generate the scripts.  It
 uses features that some UNIX versions of `m4' do not have.  It also
 overflows internal limits of some versions of `m4', including GNU `m4'
 1.0.  You must use version 1.1 or later of GNU `m4'.  Using version 1.3
 or later will be much faster than 1.1 or 1.2.
 
     Upgrading, for information about upgrading from version 1.
  History, for the story of Autoconf's development.  
 Questions, for answers to some common questions about Autoconf.
 
    Mail suggestions and bug reports for Autoconf to
 `bug-gnu-utils@prep.ai.mit.edu'.  Please include the Autoconf version
 number, which you can get by running `autoconf --version'.
 
Info Catalog (autocf21.info.gz) Top (autocf21.info.gz) Top (autocf21.info.gz) Making configure Scripts
automatically generated byinfo2html