By default, aclocal
searches for .m4
files in the following
directories, in this order:
acdir-APIVERSION
.m4
macros distributed with automake itself
are stored. APIVERSION depends on the automake release used;
for automake 1.6.x, APIVERSION = 1.6
.
acdir
.m4
files, and is
configured when automake
itself is built. This is
@datadir@/aclocal/
, which typically
expands to ${prefix}/share/aclocal/
. To find the compiled-in
value of acdir, use the --print-ac-dir
option
(see aclocal options).
As an example, suppose that automake-1.6.2 was configured with
--prefix=/usr/local
. Then, the search path would be:
/usr/local/share/aclocal-1.6/
/usr/local/share/aclocal/
As explained in (see aclocal options), there are several options that can be used to change or extend this search path.
--acdir
The most obvious option to modify the search path is
--acdir=
dir, which changes default directory and
drops the APIVERSION directory. For example, if one specifies
--acdir=/opt/private/
, then the search path becomes:
/opt/private/
Note that this option, --acdir
, is intended for use
by the internal automake test suite only; it is not ordinarily
needed by end-users.
-I
dir
Any extra directories specified using -I
options
(see aclocal options) are prepended to this search list. Thus,
aclocal -I /foo -I /bar
results in the following search path:
/foo
/bar
dirlist
There is a third mechanism for customizing the search path. If a
dirlist
file exists in acdir, then that file is assumed to
contain a list of directories, one per line, to be added to the search
list. These directories are searched after all other
directories.
For example, suppose
acdir
/dirlist
contains the following:
/test1 /test2
and that aclocal
was called with the -I /foo -I /bar
options.
Then, the search path would be
/foo
/bar
/test1
/test2
If the --acdir=
dir option is used, then
aclocal
will search for the dirlist
file in dir. In the
--acdir=/opt/private/
example above, aclocal
would look
for /opt/private/dirlist
. Again, however, the --acdir
option is intended for use by the internal automake test suite only;
--acdir
is not ordinarily needed by end-users.
dirlist
is useful in the following situation: suppose that
automake
version 1.6.2
is installed with
$prefix=/usr by the system vendor. Thus, the default search
directories are
/usr/share/aclocal-1.6/
/usr/share/aclocal/
However, suppose further that many packages have been manually
installed on the system, with $prefix=/usr/local, as is typical.
In that case, many of these "extra" .m4
files are in
/usr/local/share/aclocal
. The only way to force
/usr/bin/aclocal
to find these "extra" .m4
files
is to always call aclocal -I /usr/local/share/aclocal
.
This is inconvenient. With dirlist
, one may create the file
/usr/share/aclocal/dirlist
which contains only the single line
/usr/local/share/aclocal
Now, the "default" search path on the affected system is
/usr/share/aclocal-1.6/
/usr/share/aclocal/
/usr/local/share/aclocal/
without the need for -I
options; -I
options can be reserved
for project-specific needs (my-source-dir/m4/
), rather than
using it to work around local system-dependent tool installation
directories.
Similarly, dirlist
can be handy if you have installed a local
copy Automake on your account and want aclocal
to look for
macros installed at other places on the system.