GNU Automake is a
software development tool
A programming tool or software development tool is a computer program that is used to develop another computer program, usually by helping the developer manage computer files. For example, a programmer may use a tool called a source code editor ...
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
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
and
linker
Linker or linkers may refer to:
Computing
* Linker (computing), a computer program that takes one or more object files generated by a compiler or generated by an assembler and links them with libraries, generating an executable program or shar ...
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 script
When installing a package on a Unix or Unix-like environment, a configure script is a shell script that generates build configuration files for a codebase to facilitate cross-platform support. It generates files tailoring for the host system the ...
s to generate a working
Makefile
In software development, Make is a command-line interface software tool that performs actions ordered by configured Dependence analysis, dependencies as defined in a configuration file called a ''makefile''. It is commonly used for build automati ...
.
The
Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985. The organisation supports the free software movement, with the organization's preference for software being distributed ...
maintains as one of the
GNU
GNU ( ) is an extensive collection of free software (394 packages ), which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operating systems popu ...
programs, and as part of the
GNU build system
The GNU Autotools, also known as the GNU Build System, is a suite of build automation tools designed to support building source code and packaging the resulting binaries. It supports building a codebase for multiple target systems without custom ...
. It is used to build several GNU applications and libraries, such as
GTK
GTK (formerly GIMP ToolKit and GTK+) is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both Free software, free and ...
, as well as non-GNU software such as
XCircuit.
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
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
(for example, in which directories header files will be found)
* A list of command-line options to be passed to the
linker
Linker or linkers may refer to:
Computing
* Linker (computing), a computer program that takes one or more object files generated by a compiler or generated by an assembler and links them with libraries, generating an executable program or shar ...
(which libraries the program needs and in what directories they are to be found)
Automake also takes care of automatically generating the
dependency information, 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.
Design
Automake is written in
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
and must be used with
GNU Autoconf.
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
The GNU Compiler Collection (GCC) is a collection of compilers from the GNU Project that support various programming languages, Computer architecture, hardware architectures, and operating systems. The Free Software Foundation (FSF) distributes ...
(GCC), for example, uses ''aclocal'' even though its makefile is hand written.
Like Autoconf, Automake is not entirely
backward compatible
In telecommunications and computing, backward compatibility (or backwards compatibility) is a property of an operating system, software, real-world product, or technology that allows for interoperability with an older legacy system, or with inpu ...
. For example, a project created with automake 1.13 will not necessarily work with automake 1.14.
See also
*
*
References
Sources
*
External links
*
Online version of ''The Goat Book'' aka Autobook
Combined manual for Automake and AutoconfAutotoolset home page
{{Perl
Build automation
Compiling tools
Cross-platform free software
Free software programmed in Perl
GNU Project software
Software using the GNU General Public License