Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Automake
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming tool to automate parts of the compilation process}} {{Infobox software | name = Automake | logo = Heckert GNU white.svg | logo size = 150px | developer = [[GNU Project]] | released = {{Start date and age|1996|05|28}} | latest release version = {{wikidata|property|reference|edit|P348}} | latest release date = {{Start date and age|{{wikidata|qualifier|P348|P577}}}} | operating system = [[Cross-platform]] | genre = [[Programming tool]] | license = [[GNU General Public License]] | website = {{Official URL}} }} '''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 (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 script]]s to generate a working [[Makefile]].<ref name="GNU manual">{{cite web |url=https://www.gnu.org/software/automake/manual/automake.html|title=GNU Automake |website=[[GNU]] |publisher=[[Free Software Foundation]] |date=2021-10-01 |access-date=2024-04-26}}</ref> The [[Free Software Foundation]] maintains {{samp|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]],<ref>{{cite web |url=https://developer-old.gnome.org/gtk3/stable/gtk-building.html |title=Compiling the GTK+ libraries |access-date=2024-04-26|archive-url=https://web.archive.org/web/20240426154416/https://developer-old.gnome.org/gtk3/stable/gtk-building.html|archive-date=2024-04-26|url-status=dead}}</ref> as well as non-GNU software such as [[XCircuit]].<ref>{{cite web |url=http://www.opencircuitdesign.com/xcircuit/install.html |title=XCircuit Compile and Install |access-date=2024-04-26}}</ref> == Process == [[File:Autoconf-automake-process.svg|thumb|upright=1.5|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 (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,<ref>{{cite web |url=https://www.gnu.org/software/automake/manual/html_node/Dependency-Tracking.html |title=Automake Manual -- Automatic Dependency Tracking |website=GNU.org |access-date=2024-04-26}}</ref> 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.<ref>{{cite web |url=https://www.gnu.org/software/automake/history/automake-history.html#Dependency-Tracking-Evolution |title=Automake History |website=GNU.org |access-date=2024-04-26}}</ref> == Design == Automake is written in [[Perl]] and must be used with [[GNU Autoconf]].<ref name="GNU manual" /> 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.<ref>{{cite web |url=https://curl.se/mail/lib-2013-07/0173.html |title=Re: "make distclean" broken? |date=2013-07-16 |access-date=2024-04-26}}</ref> == See also == {{Portal|Free and open-source software}} * {{Annotated link|configure script}} * {{Annotated link|Make (software)}} == References == {{Reflist}} == Sources == {{refbegin}} * {{cite book |first1=Gary V. |last1=Vaughan |first2=Ben |last2=Elliston |first3=Tom |last3=Tromey |title=GNU Autoconf, Automake, and Libtool |year=2000 |publisher=Sams |isbn=1-57870-190-2}} {{refend}} == External links == * {{Official website}} * [http://sources.redhat.com/autobook/ Online version of ''The Goat Book'' aka Autobook] {{Webarchive|url=https://web.archive.org/web/20101220095404/http://sources.redhat.com/autobook/ |date=2010-12-20 }} * [http://buildsystem-manual.sourceforge.net/ Combined manual for Automake and Autoconf] * [http://autotoolset.sourceforge.net/ Autotoolset home page] {{GNU}} {{Perl}} [[Category:Build automation]] [[Category:Compiling tools]] [[Category:Cross-platform free software]] [[Category:Free software programmed in Perl]] [[Category:GNU Project software]] [[Category:Software using the GNU General Public License]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Annotated link
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:GNU
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Perl
(
edit
)
Template:Portal
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Samp
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Webarchive
(
edit
)