GNU Info

Info Node: (automake.info)General Operation

(automake.info)General Operation


Next: Depth Prev: Generalities Up: Generalities
Enter node , (file) or (file)node

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
system.

   Note that GNU make extensions are not recognized by Automake.  Using
such extensions in a `Makefile.am' will lead to errors or confusing
behavior.

   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' 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 `##' 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


automatically generated by info2www version 1.2.2.9