(automake.info)Top


Next: Introduction Up: (dir)

GNU Automake
************

This manual is for GNU Automake (version 1.10.1, 21 January 2008), a
program that creates GNU standards-compliant Makefiles from template
files.

   Copyright (C) 1995, 1996, 1997, 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 no Front-Cover texts,
     and with no Back-Cover Texts.  A copy of the license is included
     in the section entitled "GNU Free Documentation License."


* Introduction
Automake's purpose
* Autotools Introduction
An Introduction to the Autotools
* Generalities
General ideas
* Examples
Some example packages
* Invoking Automake
Creating a Makefile.in
* configure
Scanning configure.ac or configure.in
* Directories
Declaring subdirectories
* Programs
Building programs and libraries
* Other objects
Other derived objects
* Other GNU Tools
Other GNU Tools
* Documentation
Building documentation
* Install
What gets installed
* Clean
What gets cleaned
* Dist
What goes in a distribution
* Tests
Support for test suites
* Rebuilding
Automatic rebuilding of Makefile
* Options
Changing Automake's behavior
* Miscellaneous
Miscellaneous rules
* Include
Including extra files in an Automake template.
* Conditionals
Conditionals
* Gnits
The effect of `--gnu' and `--gnits'
* Cygnus
The effect of `--cygnus'
* Not Enough
When Automake is not Enough
* Distributing
Distributing the Makefile.in
* API versioning
About compatibility between Automake versions
* Upgrading
Upgrading to a Newer Automake Version
* FAQ
Frequently Asked Questions
* History
Notes about the history of Automake
* Copying This Manual
How to make copies of this manual
* Indices
Indices of variables, macros, and concepts
 --- The Detailed Node Listing ---

An Introduction to the Autotools

* GNU Build System
Introducing the GNU Build System
* Use Cases
Use Cases for the GNU Build System
* Why Autotools
How Autotools Help
* Hello World
A Small Hello World Package
Use Cases for the GNU Build System

* Basic Installation
Common installation procedure
* Standard Targets
A list of standard Makefile targets
* Standard Directory Variables
A list of standard directory variables
* Standard Configuration Variables
Using configuration variables
* config.site
Using a config.site file
* VPATH Builds
Parallel build trees
* Two-Part Install
Installing data and programs separately
* Cross-Compilation
Building for other architectures
* Renaming
Renaming programs at install time
* DESTDIR
Building binary packages with DESTDIR
* Preparing Distributions
Rolling out tarballs
* Dependency Tracking
Automatic dependency tracking
* Nested Packages
The GNU Build Systems can be nested
A Small Hello World

* Creating amhello
Create `amhello-1.0.tar.gz' from scratch
* amhello Explained
`configure.ac' and `Makefile.am' explained
General ideas

* General Operation
General operation of Automake
* Strictness
Standards conformance checking
* Uniform
The Uniform Naming Scheme
* Canonicalization
How derived variables are named
* User Variables
Variables reserved for the user
* Auxiliary Programs
Programs automake might require
Some example packages

* Complete
A simple example, start to finish
* true
Building true and false
Scanning `configure.ac'

* Requirements
Configuration requirements
* Optional
Other things Automake recognizes
* Invoking aclocal
Auto-generating aclocal.m4
* Macros
Autoconf macros supplied with Automake
Auto-generating aclocal.m4

* aclocal options
Options supported by aclocal
* Macro search path
How aclocal finds .m4 files
* Extending aclocal
Writing your own aclocal macros
* Local Macros
Organizing local macros
* Serials
Serial lines in Autoconf macros
* Future of aclocal
aclocal's scheduled death
Autoconf macros supplied with Automake

* Public macros
Macros that you can use.
* Obsolete macros
Macros that you should stop using.
* Private macros
Macros that you should not use.
Directories

* Subdirectories
Building subdirectories recursively
* Conditional Subdirectories
Conditionally not building directories
* Alternative
Subdirectories without recursion
* Subpackages
Nesting packages
Building Programs and Libraries

* A Program
Building a program
* A Library
Building a library
* A Shared Library
Building a Libtool library
* Program and Library Variables
Variables controlling program and library builds
* Default _SOURCES
Default source files
* LIBOBJS
Special handling for LIBOBJS and ALLOCA
* Program variables
Variables used when building a program
* Yacc and Lex
Yacc and Lex support
* C++ Support
Compiling C++ sources
* Objective C Support
Compiling Objective C sources
* Unified Parallel C Support
Compiling Unified Parallel C sources
* Assembly Support
Compiling assembly sources
* Fortran 77 Support
Compiling Fortran 77 sources
* Fortran 9x Support
Compiling Fortran 9x sources
* Java Support
Compiling Java sources
* Support for Other Languages
Compiling other languages
* ANSI
Automatic de-ANSI-fication (obsolete)
* Dependencies
Automatic dependency tracking
* EXEEXT
Support for executable extensions
Building a program

* Program Sources
Defining program sources
* Linking
Linking with libraries or extra objects
* Conditional Sources
Handling conditional sources
* Conditional Programs
Building program conditionally
Building a Shared Library

* Libtool Concept
Introducing Libtool
* Libtool Libraries
Declaring Libtool Libraries
* Conditional Libtool Libraries
Building Libtool Libraries Conditionally
* Conditional Libtool Sources
Choosing Library Sources Conditionally
* Libtool Convenience Libraries
Building Convenience Libtool Libraries
* Libtool Modules
Building Libtool Modules
* Libtool Flags
Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
* LTLIBOBJS
Using $(LTLIBOBJS) and $(LTALLOCA)
* Libtool Issues
Common Issues Related to Libtool's Use
Fortran 77 Support

* Preprocessing Fortran 77
Preprocessing Fortran 77 sources
* Compiling Fortran 77 Files
Compiling Fortran 77 sources
* Mixing Fortran 77 With C and C++
Mixing Fortran 77 With C and C++
Mixing Fortran 77 With C and C++

* How the Linker is Chosen
Automatic linker selection
Fortran 9x Support

* Compiling Fortran 9x Files
Compiling Fortran 9x sources
Other Derived Objects

* Scripts
Executable scripts
* Headers
Header files
* Data
Architecture-independent data files
* Sources
Derived sources
Built sources

* Built sources example
Several ways to handle built sources.
Other GNU Tools

* Emacs Lisp
Emacs Lisp
* gettext
Gettext
* Libtool
Libtool
* Java
Java
* Python
Python
Building documentation

* Texinfo
Texinfo
* Man pages
Man pages
Miscellaneous Rules

* Tags
Interfacing to etags and mkid
* Suffixes
Handling new file extensions
* Multilibs
Support for multilibs.
When Automake Isn't Enough

* Extending
Adding new rules or overriding existing ones.
* Third-Party Makefiles
Integrating Non-Automake `Makefile's.
Frequently Asked Questions about Automake

* CVS
CVS and generated files
* maintainer-mode
missing and AM_MAINTAINER_MODE
* wildcards
Why doesn't Automake support wildcards?
* limitations on file names
Limitations on source and installed file names
* distcleancheck
Files left in build directory after distclean
* Flag Variables Ordering
CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS
* renamed objects
Why are object files sometimes renamed?
* Per-Object Flags
How to simulate per-object flags?
* Multiple Outputs
Writing rules for tools with many output files
* Hard-Coded Install Paths
Installing to Hard-Coded Locations
History of Automake

* Timeline
The Automake story.
* Dependency Tracking Evolution
Evolution of Automatic Dependency Tracking
* Releases
Statistics about Automake Releases
Copying This Manual

* GNU Free Documentation License
License for copying this manual
Indices

* Macro Index
Index of Autoconf macros
* Variable Index
Index of Makefile variables
* General Index
General index

automatically generated by info2www