GNU Info

Info Node: (autoconf.info)Top

(autoconf.info)Top


Next: Introduction Up: (dir)
Enter node , (file) or (file)node

Autoconf
********

   This file documents the GNU Autoconf package for creating scripts to
configure source code packages using templates and the GNU M4 macro
package.  This is edition 2.53, for Autoconf version 2.53.

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
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
Questions
Questions about Autoconf, with answers
History
History of Autoconf
Copying This Manual
How to make copies of this manual
Indices
Indices of symbols, concepts, etc.
 --- The Detailed Node Listing ---

The GNU build system

Automake
Escaping Makefile hell
Libtool
Building libraries portably
Pointers
More info on the GNU build system
Making `configure' Scripts

Writing configure.ac
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
configure.ac Layout
Standard organization of configure.ac
Initialization and Output Files

Initializing configure
Option processing etc.
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 `Makefile's
Configuration Headers
Creating a configuration header file
Configuration Commands
Running arbitrary instantiation commands
Configuration Links
Links depending from 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
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
UNIX Variants
Special kludges for specific UNIX variants
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

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
C Compiler
Checking its characteristics
C++ Compiler
Likewise
Fortran 77 Compiler
Likewise
Writing Tests

Examining Declarations
Detecting header files and declarations
Examining Syntax
Detecting language syntax features
Examining Libraries
Detecting functions and global variables
Run Time
Testing for run-time features
Systemology
A zoology of operating systems
Multiple Cases
Tests for several possible values
Language Choice
Selecting which language to use for testing
Checking Run Time Behavior

Test Programs
Running test programs
Guidelines
General rules for writing test programs
Test Functions
Avoiding pitfalls in test programs
Results of Tests

Defining Symbols
Defining C preprocessor symbols
Setting Output Variables
Replacing variables in output files
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
Invoking autom4te
The Autoconf executables backbone
Programming in M4sugar
Convenient pure M4 macros
Programming in M4sh
Common Shell Constructs
M4 Quotation

Active Characters
Characters that change the behavior of m4
One Macro Call
Quotation and one macro call
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
Programming in M4sugar

Redefined M4 Macros
M4 builtins changed in M4sugar
Evaluation Macros
More quotation and evaluation control
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
Portable Shell Programming

Shellology
A zoology of shells
Here-Documents
Quirks and tricks
File Descriptors
FDs and redirections
File System Conventions
File- and pathnames
Shell Substitutions
Variable and command expansions
Assignments
Varying side effects of assignments
Special Shell Variables
Variables you should not change
Limitations of Builtins
Portable use of not so portable /bin/sh
Limitations of Usual Tools
Portable use of portable tools
Limitations of Make
Portable Makefiles
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

External Software
Working with other optional software
Package Options
Selecting optional features
Pretty Help Strings
Formating help string
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
Different calling convention
acconfig.h
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
Generating Test Suites with Autotest

Using an Autotest Test Suite
Autotest and the user
Writing testsuite.at
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
Questions About Autoconf

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
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
Copying This Manual

GNU Free Documentation License
License for copying this manual
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 version 1.2.2.9