(autoconf.info)Top
Next: Introduction Up: (dir)
Autoconf
********
This manual is for GNU Autoconf (version 2.62, 5 April 2008), a package
for creating scripts to configure source code packages using templates
and an M4 macro package.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007, 2008 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.2 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual," and with the Back-Cover Texts as in (a)
below. A copy of the license is included in the section entitled
"GNU Free Documentation License."
(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual. Buying copies from the FSF supports it in
developing GNU and promoting software freedom."
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
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
Posix Variants- Special kludges for specific 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
Erlang Compiler and Interpreter- Likewise
Fortran 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
Programming in M4sh- Common shell Constructs
File Descriptor Macros- File descriptor macros for input and output
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
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
Forbidden Patterns- Catching unexpanded macros
Writing Autoconf Macros
Macro Definitions- Basic format of an Autoconf macro
Macro Names- What to call your new macros
Reporting Messages- Notifying `autoconf' users
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 a` 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
Here-Documents- Quirks and tricks
File Descriptors- FDs and redirections
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-Newline- Empty last lines in macro definitions
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
Comments in Make Rules- Other problems with Make comments
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- Subsecond timestamp resolution
`VPATH' and Make
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
Manual Configuration
Specifying Names- Specifying the system type
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 Type- Specifying the 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_FOO_IFELSE vs AC_TRY_FOO- 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
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
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
automatically generated by info2www