(automk14.info.gz) General Operation
2.1 General Operation
Automake works by reading a `Makefile.am' and generating a
`Makefile.in'. Certain macros and targets defined in the `Makefile.am'
instruct Automake to generate more specialized code; for instance, a
`bin_PROGRAMS' macro definition will cause targets for compiling and
linking programs to be generated.
The macro definitions and targets in the `Makefile.am' are copied
verbatim into the generated file. This allows you to add arbitrary code
into the generated `Makefile.in'. For instance the Automake
distribution includes a non-standard `cvs-dist' target, which the
Automake maintainer uses to make distributions from his source control
Note that GNU make extensions are not recognized by Automake. Using
such extensions in a `Makefile.am' will lead to errors or confusing
Automake tries to group comments with adjoining targets and macro
definitions in an intelligent way.
A target defined in `Makefile.am' generally overrides any such
target of a similar name that would be automatically generated by
`automake'. Although this is a supported feature, it is generally best
to avoid making use of it, as sometimes the generated rules are very
Similarly, a macro defined in `Makefile.am' will override any
definition of the macro that `automake' would ordinarily create. This
feature is more often useful than the ability to override a target
definition. Be warned that many of the macros generated by `automake'
are considered to be for internal use only, and their names might
change in future releases.
When examining a macro definition, Automake will recursively examine
macros referenced in the definition. For example, if Automake is
looking at the content of `foo_SOURCES' in this snippet
xs = a.c b.c
foo_SOURCES = c.c $(xs)
it would use the files `a.c', `b.c', and `c.c' as the contents of
Automake also allows a form of comment which is _not_ copied into
the output; all lines beginning with `##' are completely ignored by
It is customary to make the first line of `Makefile.am' read:
## Process this file with automake to produce Makefile.in
automatically generated byinfo2html