[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
system.
Note that most GNU make extensions are not recognized by Automake. Using such extensions in a `Makefile.am' will lead to errors or confusing behavior.
A special exception is that the GNU make append operator, `+=', is supported. This operator appends its right hand argument to the macro specified on the left. Automake will translate the operator into an ordinary `=' operator; `+=' will thus work with any make program.
Note that it is only valid to append to a macro in the same conditional context as the macro was originally defined. See Conditional Append, for more information.
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 particular.
Similarly, a macro defined in `Makefile.am' or AC_SUBST
'ed
from `configure.in' 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 foo_SOURCES
.
Automake also allows a form of comment which is not copied into the output; all lines beginning with `##' (leading spaces allowed) are completely ignored by Automake.
It is customary to make the first line of `Makefile.am' read:
## Process this file with automake to produce Makefile.in |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |