5 Creating a Makefile.in: Invoking automake

To create all the Makefile.ins for a package, run the automake program in the top level directory, with no arguments. automake will automatically find each appropriate Makefile.am (by scanning configure.ac; see Scanning configure.ac, using aclocal) and generate the corresponding Makefile.in. Note that automake has a rather simplistic view of what constitutes a package; it assumes that a package has only one configure.ac, at the top. If your package has multiple configure.acs, then you must run automake in each directory holding a configure.ac. (Alternatively, you may rely on Autoconf’s autoreconf, which is able to recurse your package tree and run automake where appropriate.)

You can optionally give automake an argument; .am is appended to the argument and the result is used as the name of the input file. This feature is generally only used to automatically rebuild an out-of-date Makefile.in. Note that automake must always be run from the topmost directory of a project, even if being used to regenerate the Makefile.in in some subdirectory. This is necessary because automake must scan configure.ac, and because automake uses the knowledge that a Makefile.in is in a subdirectory to change its behavior in some cases.

Automake will run autoconf to scan configure.ac and its dependencies (i.e., aclocal.m4 and any included file), therefore autoconf must be in your PATH. If there is an AUTOCONF variable in your environment it will be used instead of autoconf; this allows you to select a particular version of Autoconf. By the way, don’t misunderstand this paragraph: automake runs autoconf to scan your configure.ac; this won’t build configure and you still have to run autoconf yourself for this purpose.

automake accepts the following options:

-a
--add-missing

Automake requires certain common files to exist in certain situations; for instance, config.guess is required if configure.ac invokes AC_CANONICAL_HOST. Automake is distributed with several of these files (see Programs automake might require); this option will cause the missing ones to be automatically added to the package, whenever possible. In general if Automake tells you a file is missing, try using this option. By default Automake tries to make a symbolic link pointing to its own copy of the missing file; this can be changed with --copy.

Many of the potentially-missing files are common scripts whose location may be specified via the AC_CONFIG_AUX_DIR macro. Therefore, AC_CONFIG_AUX_DIR’s setting affects whether a file is considered missing, and where the missing file is added (see Other things Automake recognizes).

In some strictness modes, additional files are installed, see Gnits for more information.

--libdir=dir

Look for Automake data files in directory dir instead of in the installation directory. This is typically used for debugging.

The environment variable AUTOMAKE_LIBDIR provides another way to set the directory containing Automake data files. The --libdir option takes precedence over it.

--print-libdir

Print the path of the installation directory containing Automake-provided scripts and data files (e.g., texinfo.texi and install-sh).

-c
--copy

When used with --add-missing, causes installed files to be copied. The default is to make a symbolic link.

-f
--force-missing

When used with --add-missing, causes standard files to be reinstalled even if they already exist in the source tree. This involves removing the file from the source tree before creating the new symlink (or, with --copy, copying the new file).

--foreign

Set the global strictness to foreign. For more information, see Strictness.

--gnits

Set the global strictness to gnits. For more information, see Strictness.

--gnu

Set the global strictness to gnu. For more information, see Strictness. This is the default strictness.

--help

Print a summary of the command line options and exit.

-i
--ignore-deps

This disables the dependency tracking feature in generated Makefiles; see Automatic dependency tracking.

--include-deps

This enables the dependency tracking feature. This feature is enabled by default. This option is provided for historical reasons only and probably should not be used.

--no-force

Ordinarily automake creates all Makefile.ins mentioned in configure.ac. This option causes it to only update those Makefile.ins that are out of date with respect to one of their dependents.

-o dir
--output-dir=dir

Put the generated Makefile.in in the directory dir. Ordinarily each Makefile.in is created in the directory of the corresponding Makefile.am. This option is deprecated and will be removed in a future release.

-v
--verbose

Cause Automake to print information about which files are being read or created.

--version

Print the version number of Automake and exit.

-W category[,category...]
--warnings=category[,category...]

Output warnings about a category of potential problems with the package. category can be any of:

cross

Constructs compromising the ability to cross-compile the package.

gnu

Minor deviations from the GNU Coding Standards (see The GNU Coding Standards).

obsolete

Obsolete features or constructions.

override

Redefinitions of Automake rules or variables.

portability

Portability issues (e.g., use of make features that are known to be not portable).

portability-recursive

Recursive, or nested, Make variable expansions ($(foo$(x))). These are not universally supported, but are more portable than the other non-portable constructs diagnosed by -Wportability. These warnings are turned on by -Wportability but can then be turned off specifically by -Wno-portability-recursive.

extra-portability

Extra portability issues, related to rarely-used tools such as the Microsoft lib archiver.

syntax

Questionable syntax, unused variables, typos, etc.

unsupported

Unsupported or incomplete features.

all

Turn on all the above categories of warnings.

none

Turn off all the above categories of warnings.

error

Treat warnings as errors.

A category can be turned off by prefixing its name with ‘no-’. For instance, -Wno-syntax will hide the warnings about unused variables.

Warnings in the ‘gnu’, ‘obsolete’, ‘portability’, ‘syntax’, and ‘unsupported’ categories are turned on by default. The ‘gnu’ and ‘portability’ categories are turned off in --foreign strictness.

Turning off ‘portability’ will also turn off ‘extra-portability’, and similarly turning on ‘extra-portability’ will also turn on ‘portability’. However, turning on ‘portability’ or turning off ‘extra-portability’ will not affect the other category.

Unknown warning categories supplied as an argument to -W will themselves produce a warning, in the ‘unsupported’ category. This warning is never treated as an error.

The environment variable WARNINGS can contain a comma separated list of categories to enable. -W settings on the command line take precedence; for instance, -Wnone also turns off any warning categories enabled by WARNINGS.

Unknown warning categories named in WARNINGS are silently ignored.

If the environment variable AUTOMAKE_JOBS contains a positive number, it is taken as the maximum number of Perl threads to use in automake for generating multiple Makefile.in files concurrently. This is an experimental feature.