(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