Software:Automake
| Developer(s) | GNU Project |
|---|---|
| Initial release | May 28, 1996 |
| Repository | https://cgit.git.savannah.gnu.org/cgit/automake.git/ |
| Operating system | Cross-platform |
| Type | Programming tool |
| License | GNU General Public License version 2 |
| Website | {{{1}}} |
GNU Automake is a software development tool to automate parts of the compilation process. It eases common compilation problems. For example, it points to needed dependencies.
It automatically generates one or more Makefile.in from files called Makefile.am. Each Makefile.am contains, among other things, useful variable definitions for the compiled software, such as compiler and linker flags, dependencies and their versions, etc. The generated "Makefile.in"s are portable and compliant with the Makefile conventions in the GNU Coding Standards, and may be used by configure scripts to generate a working Makefile.[1]
The Free Software Foundation maintains automake as one of the GNU programs, and as part of the GNU build system. It is used to build several GNU applications and libraries, such as GTK,[2] as well as non-GNU software such as XCircuit.[3]
History
Automake was created by David MacKenzie in September 1994, who had previously developed Autoconf. He intended to create a shell script for generating GNU standards-compliant Makefile.in files from simpler Makefile.am descriptions. Development initially stalled after a month after, but was restarted in late 1995 by Tom Tromey, who took over maintenance and rewrote Automake in Perl. The first stable release, Automake 1.0, appeared on 28 May 1996, by which time the project had grown to more than 3,000 lines of code and included facilities such as distribution checking and preliminary GNU Libtool support. Automake 1.2, released in 1997, introduced `aclocal`, `AM_INIT_AUTOMAKE`, conditionals, and full Libtool support. In 2002 maintenance passed from Tromey to Alexandre Duret-Lutz. Development has continued as part of the GNU Project, with Automake remaining closely integrated with Autoconf and forming one of the principal components of the GNU build system, colloquially referred to as GNU Autotools. Starting 2020, maintenance passed to Jim Meyering, and subsequently in 2026, to Kamila Szewczyk.[4][5][6]
Process

Automake aims to allow the programmer to write a makefile in a higher-level language, rather than having to write the whole makefile manually. In simple cases, it suffices to give:
- A line that declares the name of the program to build
- A list of source files
- A list of command-line options to be passed to the compiler (for example, in which directories header files will be found)
- A list of command-line options to be passed to the linker (which libraries the program needs and in what directories they are to be found)
Automake also takes care of automatically generating the dependency information,[7] so that when a source file is modified, the next invocation of the make command will know which source files need to be recompiled. If the compiler allows it, Automake tries to make the dependency system dynamic: whenever a source file is compiled, that file's dependencies are updated by asking the compiler to regenerate the file's dependency list. In other words, dependency tracking is a side effect of the compilation process.
This attempts to avoid the problem with some static dependency systems, where the dependencies are detected only once when the programmer starts working on the project.[8]
Design
Automake is written in Perl and must be used with GNU Autoconf.[1] Automake contains the following commands:
- aclocal
- automake
aclocal, however, is a general-purpose program that can be useful to autoconf users. The GNU Compiler Collection (GCC), for example, uses aclocal even though its makefile is hand written.
Like Autoconf, Automake is not entirely backward compatible. For example, a project created with automake 1.13 will not necessarily work with automake 1.14.[9]
See also
References
- ↑ 1.0 1.1 "GNU Automake". Free Software Foundation. 2021-10-01. https://www.gnu.org/software/automake/manual/automake.html.
- ↑ "Compiling the GTK+ libraries". https://developer-old.gnome.org/gtk3/stable/gtk-building.html.
- ↑ "XCircuit Compile and Install". http://www.opencircuitdesign.com/xcircuit/install.html.
- ↑ "History of Automake (Timeline), v1.11.6". 9 July 2012. https://www.gnu.org/software/automake/manual/1.11.6/html_node/Timeline.html.
- ↑ "Kamila Szewczyk now helping out with Autoconf". https://lists.gnu.org/archive/html/autoconf/2026-08/msg00009.html.
- ↑ "GNU Automake - Summary: Group memberlist [Savannah"]. https://savannah.gnu.org/project/memberlist.php?group=automake.
- ↑ "Automake Manual -- Automatic Dependency Tracking". https://www.gnu.org/software/automake/manual/html_node/Dependency-Tracking.html.
- ↑ "Automake History". https://www.gnu.org/software/automake/history/automake-history.html#Dependency-Tracking-Evolution.
- ↑ "Re: "make distclean" broken?". 2013-07-16. https://curl.se/mail/lib-2013-07/0173.html.
Sources
- Vaughan, Gary V.; Elliston, Ben; Tromey, Tom (2000). GNU Autoconf, Automake, and Libtool. Sams. ISBN 1-57870-190-2.
External links
- No URL found. Please specify a URL here or add one to Wikidata.
- Online version of The Goat Book aka Autobook
- Combined manual for Automake and Autoconf
- Autotoolset home page
