Automake
DeveloperGNU Project
ReleaseMay 28, 1996; 30 years ago (1996-05-28)
Stable release
1.18.1[1] Edit this on Wikidata / 26 June 2025; 11 months ago (26 June 2025)
Operating systemCross-platform
TypeProgramming tool
LicenseGNU General Public License
Websitewww.gnu.org/software/automake/ Edit this at Wikidata
Repository

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]

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

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

See also

edit

References

edit
  1. ^ Karl Berry (26 June 2025). "automake-1.18.1 released [stable]". Retrieved 26 June 2025.
  2. ^ a b "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. ^ "Automake Manual -- Automatic Dependency Tracking". GNU.org. Retrieved 2024-04-26.
  6. ^ "Automake History". GNU.org. Retrieved 2024-04-26.
  7. ^ "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

📚 Artikel Terkait di Wikipedia

Changelog

Commonly-used names include "CHANGELOG", "CHANGES" and "HISTORY". The GNU Automake naming convention is "ChangeLog". Sometimes that file name includes a

GNU Autotools

consists of the GNU utilities Autoconf, Automake, and Libtool. Other related tools include GNU make, GNU gettext, pkg-config, and the GNU Compiler Collection

List of GNU packages

yacc GNU build system (autotools) – contains Autoconf, Automake, Autoheader, and Libtool GNU Compiler Collection – optimizing compiler for many programming

Autoconf

installing the resulting files. Autoconf is part of the GNU Build System – along with Automake, Libtool, Autoheader and other tools. Autoconf is agnostic

GNU GLOBAL

and unfamiliar codebase. GLOBAL is used by other software, including GNU Automake. FreeBSD uses it in its build system. Debug symbol Shigio Yamaguchi (15

Make (software)

tools that would generate makefiles with dependencies (e.g. Automake toolchain by the GNU Project, can do so automatically). Another approach is to use

GNU Libtool

is used by Autoconf and Automake, two other portability tools in the GNU build system. It can also be used directly. Since GNU Libtool was released, other

GNU coding standards

Gnulib, Autoconf, and Automake, which are said to cover many of the same topics. The GNU coding standards are primarily used by GNU projects, though its