GNU Automake
   HOME

TheInfoList



OR:

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 (computing), 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.


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 (computing), linker (which libraries the program needs and in what directories they are to be found) Automake also takes care of automatically generating the Coupling (computer science), 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

* *


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 GNU General Public License