LinuxCommandLibrary

automake

Generate Makefiles from `configure.ac`

TLDR

Run automake to regenerate Makefiles after editing Makefile.am

$ automake
copy

Generate Makefile.in for a non-GNU project (foreign mode)
$ automake --foreign
copy

Add verbose output for debugging
$ automake [[-v|--verbose]]
copy

Add missing standard files (INSTALL, COPYING, depcomp, etc.)
$ automake [[-a|--add-missing]]
copy

Display help
$ automake --help
copy

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)

Copied to clipboard