Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a43c1d1b096ba140

Jump to content

Automake

From Wikipedia, the free encyclopedia
(Redirected from GNU Automake)
Automake
DeveloperGNU Project
ReleaseMay 28, 1996; 30 years ago (1996-05-28)
Stable release
1.19[1] Edit this on Wikidata / 10 September 2026; 21 days ago (10 September 2026)
Operating systemCross-platform
TypeProgramming tool
LicenseGNU General Public License version 2
Websitewww.gnu.org/software/automake/ Edit this at Wikidata
Repositoryhttps://cgit.git.savannah.gnu.org/cgit/automake.git/

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.[2]

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,[3] as well as non-GNU software such as XCircuit.[4]

History

[edit]

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.[5][6][7]

Process

[edit]
Flow diagram of autoconf and automake

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,[8] 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.[9]

Design

[edit]

Automake is written in Perl and must be used with GNU Autoconf.[2] 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.[10]

See also

[edit]

References

[edit]
  1. ↑ Kamila Szewczyk (10 September 2026). "automake-1.19 released [stable]". Retrieved 10 September 2026.
  2. 1 2 "GNU Automake". GNU. Free Software Foundation. 2021-10-01. Retrieved 2024-04-26.
  3. ↑ "Compiling the GTK+ libraries". Archived from the original on 2024-04-26. Retrieved 2024-04-26.
  4. ↑ "XCircuit Compile and Install". Retrieved 2024-04-26.
  5. ↑ "History of Automake (Timeline), v1.11.6". 9 July 2012. Retrieved 1 October 2026.
  6. ↑ "Kamila Szewczyk now helping out with Autoconf". lists.gnu.org. Retrieved 2026-10-01.
  7. ↑ "GNU Automake - Summary: Group memberlist [Savannah]". savannah.gnu.org. Retrieved 2026-10-01.
  8. ↑ "Automake Manual -- Automatic Dependency Tracking". GNU.org. Retrieved 2024-04-26.
  9. ↑ "Automake History". GNU.org. Retrieved 2024-04-26.
  10. ↑ "Re: "make distclean" broken?". 2013-07-16. Retrieved 2024-04-26.

Sources

[edit]
  • Vaughan, Gary V.; Elliston, Ben; Tromey, Tom (2000). GNU Autoconf, Automake, and Libtool. Sams. ISBN 1-57870-190-2.
[edit]