Automake includes a number of Autoconf macros that can be used in
your package (see Macros supplied with Automake); some of them are
actually required by
Automake in certain situations. These macros must be defined in your
aclocal.m4; otherwise they will not be seen by
aclocal program will automatically generate
aclocal.m4 files based on the contents of configure.ac.
This provides a convenient way to get Automake-provided macros,
without having to search around. The
allows other packages to supply their own macros (see Extending aclocal). You can also use it to maintain your own set of custom
macros (see Local Macros).
aclocal is run, it scans your configure.ac for
macros that you have used beyond the default ones provided by Autoconf.
These include macros provided with Automake as well as any other custom
aclocal makes these macros available to
autoconf by placing them in a file called aclocal.m4.
However, you should not usually need to run
as it is run automatically by
autoreconf will protect you against any future changes to the
aclocal command, which are expected. (Some people install
Automake to use
aclocal to manage custom M4 macros without
actually using Automake otherwise, so it’s possible that this
functionality will cease to be offered as part of Automake.)
We can expand on the flowchart introduced in System overview to
show the role of
configure.ac [local macros] ____/| | / | | | | | V | `--->(aclocal) | | | V | aclocal.m4 | \____ | \| | V (autoconf) | | V configure
See Custom macros.
aclocal scans all the .m4 files it can
find, looking for macro definitions (see Macro Search Path). Then
it scans configure.ac. Any mention of one of the macros found
in the first step causes that macro, and any macros it in turn
requires, to be put into aclocal.m4.
Putting the file that contains the macro definition into
aclocal.m4 is usually done by copying the entire text of this
file, including unused macro definitions as well as both ‘#’ and
‘dnl’ comments. If you want to make a comment that will be
completely ignored by
aclocal, use ‘##’ as the comment
When a file selected by
aclocal is located in a subdirectory
specified as a relative search path with
aclocal assumes the file belongs to the package
m4_include instead of copying it into
aclocal.m4. This makes the package smaller, eases dependency
tracking, and cause the file to be distributed automatically.
(See Local Macros for an example.) Any macro that is found in a
system-wide directory, or via an absolute search path will be copied.
So use ‘-I `pwd`/reldir’ instead of ‘-I reldir’ whenever
some relative directory should be considered outside the package.
The contents of acinclude.m4, if this file exists, are also automatically included in aclocal.m4. We recommend against using acinclude.m4 in new packages (see Local Macros).
While computing aclocal.m4,
autom4te (see Using
Autom4te in The Autoconf Manual) in order to trace the macros that are
really used, and omit from aclocal.m4 all macros that are
mentioned but otherwise unexpanded (this can happen when a macro is
autom4te is expected to be in the
PATH, just as
autoconf. Its location can be
overridden using the
AUTOM4TE environment variable.
|• aclocal Options||Options supported by aclocal|
|• Macro Search Path||How aclocal finds .m4 files|
|• Extending aclocal||Writing your own aclocal macros|
|• Local Macros||Organizing local macros|
|• Serials||Serial lines in Autoconf macros|
|• Future of aclocal||aclocal’s scheduled death|