automake
Generate Makefiles from `configure.ac`
TLDR
Run automake to regenerate Makefiles after editing Makefile.am
Generate Makefile.in for a non-GNU project (foreign mode)
Add verbose output for debugging
Add missing standard files (INSTALL, COPYING, depcomp, etc.)
Display help
SYNOPSIS
automake [OPTION]... [Makefile...]
PARAMETERS
-h, --help
Print a help message and exit
--version
Print version information and exit
--print-libdir
Print standard library directory and exit
-v, --verbose
Print verbose information while running
--dry-run, -n
Do a dry run, do not update files
--force-missing, -f
Force update of missing or out-of-date files
--add-missing
Add missing standard files like install-sh
--copy
Copy files from data directory, don't link
--foreign
Allow non-GNU standards (set FOREIGN)
--gnu
Use GNU coding standards (default)
--gnits
Use strict Gnu standards
--ignore-deps
Disable automatic dependency tracking
--include-deps
Include Makefile fragment with dependency info
-W CATEGORY, --warnings=CATEGORY
Set warning level for CATEGORY (gnu, etc.)
-Wno-CATEGORY
Suppress warnings in CATEGORY
--Werror
Treat warnings as errors
DESCRIPTION
Automake is a GNU tool that automatically generates Makefile.in files from user-written Makefile.am files, ensuring compliance with the GNU Coding Standards. It simplifies the creation of portable build systems for software projects, supporting C, C++, Fortran, Java, and more. By processing directives in Makefile.am, such as defining programs, libraries, headers, data files, and installation rules, Automake produces makefiles that integrate seamlessly with Autoconf to generate platform-independent Makefiles.
Key features include automatic dependency tracking, support for conditional compilation, Texinfo documentation, and distribution tarballs. It enforces standards but allows customization via macros like AUTOMAKE_OPTIONS. Commonly used in the Autotools suite (autoconf, automake, libtool), it streamlines maintenance of complex projects. Run automake --add-missing to include required auxiliary files like install-sh or missing. Automake requires a configure.ac or configure.in file generated by Autoconf.
CAVEATS
Requires configure.ac and Autoconf; may overwrite custom Makefile.in; strict on directory layout (src, include dirs); debug with --verbose. Not for non-GNU projects without --foreign.
COMMON WORKFLOW
1. Write configure.ac and Makefile.am.
2. Run aclocal, autoconf, automake --add-missing.
3. ./configure & make.
MAKEFILE.AM EXAMPLE
bin_PROGRAMS = foo
foo_SOURCES = foo.c bar.c
Defines executable foo from sources.
HISTORY
Developed by David MacKenzie and Roland McGrath; first released in 1994 as part of GNU Autotools. Evolved from simpler make tools to support complex builds; current version (1.16+) emphasizes POSIX compliance and deprecation of obsolete features like configure.in. Widely used in open-source projects like GCC, GNOME.
SEE ALSO
autoconf(1), aclocal(1), autoreconf(1), libtoolize(1), make(1), config.guess(1)


