GNU Automake
   HOME

TheInfoList



OR:

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 In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
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 In software development, Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called ''Makefiles'' which specify how to derive the target program. Though integrated develo ...
. The
Free Software Foundation The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
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 In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
(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 Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offici ...
and must be used with
GNU Autoconf GNU Autoconf is a tool for producing configure scripts for building, installing, and packaging software on computer systems where a Bourne shell is available. Autoconf is agnostic about the programming languages used, but it is often used for ...
. 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 an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free software ...
(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) A configure script is an executable script designed to aid in developing a computer program, program to be run on a wide number of different computers. It matches the Library (computer science), libraries on the user's computer, with those requir ...
* Make (software)


References


Sources

*


External links

*
Online version of ''The Goat Book'' aka Autobook

Combined manual for Automake and Autoconf

Autotoolset home page
{{Perl Build automation Compiling tools Cross-platform free software Free software programmed in Perl GNU Project software Software using the GPL license