manpagez: man pages & more
info autoconf
Home | html | info | man

File: autoconf.info,  Node: Top,  Next: Introduction,  Up: (dir)

Autoconf
********

This manual (4 December 2023) is for GNU Autoconf (version 2.72), a
package for creating scripts to configure source code packages using
templates and an M4 macro package.

   Copyright © 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.3 or any later version published by the Free Software
     Foundation; with no Invariant Sections, no Front-Cover texts, and
     no Back-Cover Texts.  A copy of the license is included in the
     section entitled "GNU Free Documentation License."

* Menu:

* Introduction::                Autoconf's purpose, strengths, and weaknesses
* The GNU Build System::        A set of tools for portable software packages
* Making configure Scripts::    How to organize and produce Autoconf scripts
* Setup::                       Initialization and output
* Existing Tests::              Macros that check for particular features
* Writing Tests::               How to write new feature checks
* Results::                     What to do with results from feature checks
* Programming in M4::           Layers on top of which Autoconf is written
* Programming in M4sh::         Shell portability layer
* Writing Autoconf Macros::     Adding new macros to Autoconf
* Portable Shell::              Shell script portability pitfalls
* Portable Make::               Makefile portability pitfalls
* Portable C and C++++::          C and C++ portability pitfalls
* Manual Configuration::        Selecting features that can't be guessed
* Site Configuration::          Local defaults for ‘configure’
* Running configure Scripts::   How to use the Autoconf output
* config.status Invocation::    Recreating a configuration
* Obsolete Constructs::         Kept for backward compatibility
* Using Autotest::              Creating portable test suites
* FAQ::                         Frequent Autoconf Questions, with answers
* History::                     History of Autoconf
* GNU Free Documentation License::  License for copying this manual
* Indices::                     Indices of symbols, concepts, etc.

 -- The Detailed Node Listing --

The GNU Build System

* Automake::                    Escaping makefile hell
* Gnulib::                      The GNU portability library
* Libtool::                     Building libraries portably
* Pointers::                    More info on the GNU build system

Making ‘configure’ Scripts

* Writing Autoconf Input::      What to put in an Autoconf input file
* autoscan Invocation::         Semi-automatic ‘configure.ac’ writing
* ifnames Invocation::          Listing the conditionals in source code
* autoconf Invocation::         How to create configuration scripts
* autoreconf Invocation::       Remaking multiple ‘configure’ scripts

Writing ‘configure.ac’

* Shell Script Compiler::       Autoconf as solution of a problem
* Autoconf Language::           Programming in Autoconf
* Autoconf Input Layout::       Standard organization of ‘configure.ac’

Initialization and Output Files

* Initializing configure::      Option processing etc.
* Versioning::                  Dealing with Autoconf versions
* Notices::                     Copyright, version numbers in ‘configure’
* Input::                       Where Autoconf should find files
* Output::                      Outputting results from the configuration
* Configuration Actions::       Preparing the output based on results
* Configuration Files::         Creating output files
* Makefile Substitutions::      Using output variables in makefiles
* Configuration Headers::       Creating a configuration header file
* Configuration Commands::      Running arbitrary instantiation commands
* Configuration Links::         Links depending on the configuration
* Subdirectories::              Configuring independent packages together
* Default Prefix::              Changing the default installation prefix

Substitutions in Makefiles

* Preset Output Variables::     Output variables that are always set
* Installation Directory Variables::  Other preset output variables
* Changed Directory Variables::  Warnings about ‘datarootdir’
* Build Directories::           Supporting multiple concurrent compiles
* Automatic Remaking::          Makefile rules for configuring

Configuration Header Files

* Header Templates::            Input for the configuration headers
* autoheader Invocation::       How to create configuration templates
* Autoheader Macros::           How to specify CPP templates

Existing Tests

* Common Behavior::             Macros' standard schemes
* Alternative Programs::        Selecting between alternative programs
* Files::                       Checking for the existence of files
* Libraries::                   Library archives that might be missing
* Library Functions::           C library functions that might be missing
* Header Files::                Header files that might be missing
* Declarations::                Declarations that may be missing
* Structures::                  Structures or members that might be missing
* Types::                       Types that might be missing
* Compilers and Preprocessors::  Checking for compiling programs
* System Services::             Operating system services
* C and Posix Variants::        Kludges for C and Posix variants
* Erlang Libraries::            Checking for the existence of Erlang libraries

Common Behavior

* Standard Symbols::            Symbols defined by the macros
* Default Includes::            Includes used by the generic macros

Alternative Programs

* Particular Programs::         Special handling to find certain programs
* Generic Programs::            How to find other programs

Library Functions

* Function Portability::        Pitfalls with usual functions
* Particular Functions::        Special handling to find certain functions
* Generic Functions::           How to find other functions

Header Files

* Header Portability::          Collected knowledge on common headers
* Particular Headers::          Special handling to find certain headers
* Generic Headers::             How to find other headers

Declarations

* Particular Declarations::     Macros to check for certain declarations
* Generic Declarations::        How to find other declarations

Structures

* Particular Structures::       Macros to check for certain structure members
* Generic Structures::          How to find other structure members

Types

* Particular Types::            Special handling to find certain types
* Generic Types::               How to find other types

Compilers and Preprocessors

* Specific Compiler Characteristics::  Some portability issues
* Generic Compiler Characteristics::  Language independent tests and features
* C Compiler::                  Checking its characteristics
* C++ Compiler::                Likewise
* Objective C Compiler::        Likewise
* Objective C++ Compiler::      Likewise
* Erlang Compiler and Interpreter::  Likewise
* Fortran Compiler::            Likewise
* Go Compiler::                 Likewise

Writing Tests

* Language Choice::             Selecting which language to use for testing
* Writing Test Programs::       Forging source files for compilers
* Running the Preprocessor::    Detecting preprocessor symbols
* Running the Compiler::        Detecting language or header features
* Running the Linker::          Detecting library features
* Runtime::                     Testing for runtime features
* Systemology::                 A zoology of operating systems
* Multiple Cases::              Tests for several possible values

Writing Test Programs

* Guidelines::                  General rules for writing test programs
* Test Functions::              Avoiding pitfalls in test programs
* Generating Sources::          Source program boilerplate

Results of Tests

* Defining Symbols::            Defining C preprocessor symbols
* Setting Output Variables::    Replacing variables in output files
* Special Chars in Variables::  Characters to beware of in variables
* Caching Results::             Speeding up subsequent ‘configure’ runs
* Printing Messages::           Notifying ‘configure’ users

Caching Results

* Cache Variable Names::        Shell variables used in caches
* Cache Files::                 Files ‘configure’ uses for caching
* Cache Checkpointing::         Loading and saving the cache file

Programming in M4

* M4 Quotation::                Protecting macros from unwanted expansion
* Using autom4te::              The Autoconf executables backbone
* Programming in M4sugar::      Convenient pure M4 macros
* Debugging via autom4te::      Figuring out what M4 was doing

M4 Quotation

* Active Characters::           Characters that change the behavior of M4
* One Macro Call::              Quotation and one macro call
* Quoting and Parameters::      M4 vs. shell parameters
* Quotation and Nested Macros::  Macros calling macros
* Changequote is Evil::         Worse than INTERCAL: M4 + changequote
* Quadrigraphs::                Another way to escape special characters
* Balancing Parentheses::       Dealing with unbalanced parentheses
* Quotation Rule Of Thumb::     One parenthesis, one quote

Using ‘autom4te’

* autom4te Invocation::         A GNU M4 wrapper
* Customizing autom4te::        Customizing the Autoconf package

Programming in M4sugar

* Redefined M4 Macros::         M4 builtins changed in M4sugar
* Diagnostic Macros::           Diagnostic messages from M4sugar
* Diversion support::           Diversions in M4sugar
* Conditional constructs::      Conditions in M4
* Looping constructs::          Iteration in M4
* Evaluation Macros::           More quotation and evaluation control
* Text processing Macros::      String manipulation in M4
* Number processing Macros::    Arithmetic computation in M4
* Set manipulation Macros::     Set manipulation in M4
* Forbidden Patterns::          Catching unexpanded macros

Programming in M4sh

* Common Shell Constructs::     Portability layer for common shell constructs
* Polymorphic Variables::       Support for indirect variable names
* Initialization Macros::       Macros to establish a sane shell environment
* File Descriptor Macros::      File descriptor macros for input and output

Writing Autoconf Macros

* Macro Definitions::           Basic format of an Autoconf macro
* Macro Names::                 What to call your new macros
* Dependencies Between Macros::  What to do when macros depend on other macros
* Obsoleting Macros::           Warning about old ways of doing things
* Coding Style::                Writing Autoconf macros à la Autoconf

Dependencies Between Macros

* Prerequisite Macros::         Ensuring required information
* Suggested Ordering::          Warning about possible ordering problems
* One-Shot Macros::             Ensuring a macro is called only once

Portable Shell Programming

* Shellology::                  A zoology of shells
* Invoking the Shell::          Invoking the shell as a command
* Here-Documents::              Quirks and tricks
* File Descriptors::            FDs and redirections
* Signal Handling::             Shells, signals, and headaches
* File System Conventions::     File names
* Shell Pattern Matching::      Pattern matching
* Shell Substitutions::         Variable and command expansions
* Assignments::                 Varying side effects of assignments
* Parentheses::                 Parentheses in shell scripts
* Slashes::                     Slashes in shell scripts
* Special Shell Variables::     Variables you should not change
* Shell Functions::             What to look out for if you use them
* Limitations of Builtins::     Portable use of not so portable /bin/sh
* Limitations of Usual Tools::  Portable use of portable tools

Portable Make Programming

* $< in Ordinary Make Rules::   $< in ordinary rules
* Failure in Make Rules::       Failing portably in rules
* Special Chars in Names::      Special Characters in Macro Names
* Backslash-Newline-Empty::     Empty lines after backslash-newline
* Backslash-Newline Comments::  Spanning comments across line boundaries
* Long Lines in Makefiles::     Line length limitations
* Macros and Submakes::         ‘make macro=value’ and submakes
* The Make Macro MAKEFLAGS::    ‘$(MAKEFLAGS)’ portability issues
* The Make Macro SHELL::        ‘$(SHELL)’ portability issues
* Parallel Make::               Parallel ‘make’ quirks
* Comments in Make Rules::      Other problems with Make comments
* Newlines in Make Rules::      Using literal newlines in rules
* Comments in Make Macros::     Other problems with Make comments in macros
* Trailing whitespace in Make Macros::  Macro substitution problems
* Command-line Macros and whitespace::  Whitespace trimming of values
* obj/ and Make::               Don't name a subdirectory ‘obj’
* make -k Status::              Exit status of ‘make -k’
* VPATH and Make::              ‘VPATH’ woes
* Single Suffix Rules::         Single suffix rules and separated dependencies
* Timestamps and Make::         Sub-second timestamp resolution

‘VPATH’ and Make

* Variables listed in VPATH::   ‘VPATH’ must be literal on ancient hosts
* VPATH and Double-colon::      Problems with ‘::’ on ancient hosts
* $< in Explicit Rules::        ‘$<’ does not work in ordinary rules
* Automatic Rule Rewriting::    ‘VPATH’ goes wild on Solaris
* Tru64 Directory Magic::       ‘mkdir’ goes wild on Tru64
* Make Target Lookup::          More details about ‘VPATH’ lookup

Portable C and C++ Programming

* Varieties of Unportability::  How to make your programs unportable
* Integer Overflow::            When integers get too large
* Preprocessor Arithmetic::     ‘#if’ expression problems
* Null Pointers::               Properties of null pointers
* Buffer Overruns::             Subscript errors and the like
* Volatile Objects::            ‘volatile’ and signals
* Floating Point Portability::  Portable floating-point arithmetic
* Exiting Portably::            Exiting and the exit status

Integer Overflow

* Integer Overflow Basics::     Why integer overflow is a problem
* Signed Overflow Examples::    Examples of code assuming wraparound
* Optimization and Wraparound::  Optimizations that break uses of wraparound
* Signed Overflow Advice::      Practical advice for signed overflow issues
* Signed Integer Division::     ‘INT_MIN / -1’ and ‘INT_MIN % -1’

Manual Configuration

* Specifying Target Triplets::  Specifying target triplets
* Canonicalizing::              Getting the canonical system type
* Using System Type::           What to do with the system type

Site Configuration

* Help Formatting::             Customizing ‘configure --help’
* External Software::           Working with other optional software
* Package Options::             Selecting optional features
* Pretty Help Strings::         Formatting help string
* Option Checking::             Controlling checking of ‘configure’ options
* Site Details::                Configuring site details
* Transforming Names::          Changing program names when installing
* Site Defaults::               Giving ‘configure’ local defaults

Transforming Program Names When Installing

* Transformation Options::      ‘configure’ options to transform names
* Transformation Examples::     Sample uses of transforming names
* Transformation Rules::        Makefile uses of transforming names

Running ‘configure’ Scripts

* Basic Installation::          Instructions for typical cases
* Compilers and Options::       Selecting compilers and optimization
* Multiple Architectures::      Compiling for multiple architectures at once
* Installation Names::          Installing in different directories
* Optional Features::           Selecting optional features
* System Types::                Specifying a system type
* Sharing Defaults::            Setting site-wide defaults for ‘configure’
* Defining Variables::          Specifying the compiler etc.
* configure Invocation::        Changing how ‘configure’ runs

Obsolete Constructs

* Obsolete config.status Use::  Obsolete convention for ‘config.status’
* acconfig Header::             Additional entries in ‘config.h.in’
* autoupdate Invocation::       Automatic update of ‘configure.ac’
* Obsolete Macros::             Backward compatibility macros
* Autoconf 1::                  Tips for upgrading your files
* Autoconf 2.13::               Some fresher tips

Upgrading From Version 1

* Changed File Names::          Files you might rename
* Changed Makefiles::           New things to put in ‘Makefile.in’
* Changed Macros::              Macro calls you might replace
* Changed Results::             Changes in how to check test results
* Changed Macro Writing::       Better ways to write your own macros

Upgrading From Version 2.13

* Changed Quotation::           Broken code which used to work
* New Macros::                  Interaction with foreign macros
* Hosts and Cross-Compilation::  Bugward compatibility kludges
* AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
* AC_ACT_IFELSE vs AC_TRY_ACT::  A more generic scheme for testing sources

Generating Test Suites with Autotest

* Using an Autotest Test Suite::  Autotest and the user
* Writing Testsuites::          Autotest macros
* testsuite Invocation::        Running ‘testsuite’ scripts
* Making testsuite Scripts::    Using autom4te to create ‘testsuite’

Using an Autotest Test Suite

* testsuite Scripts::           The concepts of Autotest
* Autotest Logs::               Their contents

Frequent Autoconf Questions, with answers

* Distributing::                Distributing ‘configure’ scripts
* Why GNU M4::                  Why not use the standard M4?
* Bootstrapping::               Autoconf and GNU M4 require each other?
* Why Not Imake::               Why GNU uses ‘configure’ instead of Imake
* Defining Directories::        Passing ‘datadir’ to program
* Autom4te Cache::              What is it?  Can I remove it?
* Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
* Expanded Before Required::    Expanded Before Required
* Debugging::                   Debugging ‘configure’ scripts

History of Autoconf

* Genesis::                     Prehistory and naming of ‘configure’
* Exodus::                      The plagues of M4 and Perl
* Leviticus::                   The priestly code of portability arrives
* Numbers::                     Growth and contributors
* Deuteronomy::                 Approaching the promises of easy configuration

Indices

* Environment Variable Index::  Index of environment variables used
* Output Variable Index::       Index of variables set in output files
* Preprocessor Symbol Index::   Index of C preprocessor symbols defined
* Cache Variable Index::        Index of documented cache variables
* Autoconf Macro Index::        Index of Autoconf macros
* M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
* Autotest Macro Index::        Index of Autotest macros
* Program & Function Index::    Index of those with portability problems
* Concept Index::               General index


© manpagez.com 2000-2024
Individual documents may contain additional copyright information.