In
software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
, GNU Automake is a
programming tool to automate parts of the compilation process. It eases usual 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.
The
Free Software Foundation maintains 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, as well as non-GNU software such as
XCircuit
XCircuit is a Unix/X11 and Windows program for drawing publication-quality electrical circuit schematic diagrams and related figures and the production of circuit netlists through schematic capture. XCircuit regards circuits as inherently hierar ...
.
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, 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 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 (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.
See also
*
Configure (computing)
*
Make (software)
References
Sources
*
External links
*
Online version of ''The Goat Book'' aka AutobookCombined 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 GPL license