$default_dirlist="$acdir/dirlist"
if $acdir ne $default_acdir;
+ # Search the versioned directory near the end, and then the
+ # unversioned directory last. Only do this if the user didn't
+ # override acdir.
+ push (@dirlist, "$acdir-$APIVERSION")
+ if $acdir eq $default_acdir;
+
+ # By default $(datadir)/aclocal doesn't exist. We don't want to
+ # get an error in the case where we are searching the default
+ # directory and it hasn't been created.
+ push (@dirlist, $acdir)
+ unless $acdir eq $default_acdir && ! -d $acdir;
+
+ # Finally, adds any directory listed in the `dirlist' file.
if (open (DEFAULT_DIRLIST, $default_dirlist))
{
while (<DEFAULT_DIRLIST>)
if (-d $contents )
{
push (@dirlist, $contents);
- }
+ }
}
close (DEFAULT_DIRLIST);
}
- # Search the versioned directory near the end, and then the
- # unversioned directory last. Only do this if the user didn't
- # override acdir.
- push (@dirlist, "$acdir-$APIVERSION")
- if $acdir eq $default_acdir;
-
- # By default $(datadir)/aclocal doesn't exist. We don't want to
- # get an error in the case where we are searching the default
- # directory and it hasn't been created.
- push (@dirlist, $acdir)
- unless $acdir eq $default_acdir && ! -d $acdir;
return @dirlist;
}
to supply their own macros.
At startup, @code{aclocal} scans all the @file{.m4} files it can find,
-looking for macro definitions (@pxref{Macro search path}). Then it
+looking for macro definitions (@pxref{Macro search path}). Then it
scans @file{configure.in}. 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 @file{aclocal.m4}.
@table @code
@item @var{acdir-APIVERSION}
This is where the @file{.m4} macros distributed with automake itself
-are stored. @var{APIVERSION} depends on the automake release used;
-for automake 1.6.x, @var{APIVERSION} = @code{1.6}.
+are stored. @var{APIVERSION} depends on the automake release used;
+for automake 1.6.x, @var{APIVERSION} = @code{1.6}.
@item @var{acdir}
This directory is intended for third party @file{.m4} files, and is
-configured when @command{automake} itself is built. This is
-@file{@@datadir@@/aclocal/}, which typically
-expands to @file{$@{prefix@}/share/aclocal/}. To find the compiled-in
-value of @var{acdir}, use the @code{--print-ac-dir} option
+configured when @command{automake} itself is built. This is
+@file{@@datadir@@/aclocal/}, which typically
+expands to @file{$@{prefix@}/share/aclocal/}. To find the compiled-in
+value of @var{acdir}, use the @code{--print-ac-dir} option
(@pxref{aclocal options}).
@end table
@subsection Modifying the macro search path: @code{--acdir}
-The most obvious option to modify the search path is
+The most obvious option to modify the search path is
@code{--acdir=@var{dir}}, which changes default directory and
-drops the @var{APIVERSION} directory. For example, if one specifies
+drops the @var{APIVERSION} directory. For example, if one specifies
@code{--acdir=/opt/private/}, then the search path becomes:
@enumerate
@subsection Modifying the macro search path: @code{-I @var{dir}}
-Any extra directories specified using @code{-I} options
+Any extra directories specified using @code{-I} options
(@pxref{aclocal options}) are @emph{prepended} to this search list. Thus,
@code{aclocal -I /foo -I /bar} results in the following search path:
@end enumerate
@subsection Modifying the macro search path: @file{dirlist}
+@cindex @file{dirlist}
-There is a third mechanism for customizing the search path. If a
-@file{dirlist} file exists in @var{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 @emph{after}
-any directories specified on the command line using @code{-I}, but
-@emph{before} the @var{acdir} and @var{acdir-APIVERSION} directories.
+There is a third mechanism for customizing the search path. If a
+@file{dirlist} file exists in @var{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 @emph{after} all other
+directories.
-For example, suppose
+For example, suppose
@file{@var{acdir}/dirlist} contains the following:
@example
/test2
@end example
+@noindent
and that @code{aclocal} was called with the @code{-I /foo -I /bar} options.
Then, the search path would be
@enumerate
@item @file{/foo}
@item @file{/bar}
-@item @file{/test1}
-@item @file{/test2}
@item @var{acdir}-@var{APIVERSION}
@item @var{acdir}
+@item @file{/test1}
+@item @file{/test2}
@end enumerate
-If the @code{--acdir=@var{dir}} option is used,
-then @command{aclocal} will search for the @file{dirlist} file in
-the @emph{redirected} @var{acdir} directory. In the
-@code{--acdir} example above, @command{aclocal} will search the
-@file{/opt/private/} directory for @file{dirlist}. Again, however,
-the @code{--acdir} option is intended for use by the internal
-automake test suite only; @code{--acdir} is not ordinarily
-needed by end-users.
+If the @code{--acdir=@var{dir}} option is used, then @command{aclocal}
+will search for the @file{dirlist} file in @var{dir}. In the
+@code{--acdir=/opt/private/} example above, @command{aclocal} would look
+for @file{/opt/private/dirlist}. Again, however, the @code{--acdir}
+option is intended for use by the internal automake test suite only;
+@code{--acdir} is not ordinarily needed by end-users.
-@file{dirlist} is useful in the following situation: suppose that
-@code{automake} version @code{1.6.2} is installed with
-$prefix=/usr by the system vendor. Thus, the default search
-directories are
+@file{dirlist} is useful in the following situation: suppose that
+@code{automake} version @code{1.6.2} is installed with
+$prefix=/usr by the system vendor. Thus, the default search
+directories are
@enumerate
@item @file{/usr/share/aclocal-1.6/}
@item @file{/usr/share/aclocal/}
@end enumerate
-However, suppose further that many packages have been manually
+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'' @file{.m4} files are in
-@file{/usr/local/share/aclocal}. The only way to force
-@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files
-is to always call @code{aclocal -I /usr/local/share/aclocal}.
+In that case, many of these ``extra'' @file{.m4} files are in
+@file{/usr/local/share/aclocal}. The only way to force
+@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files
+is to always call @code{aclocal -I /usr/local/share/aclocal}.
This is inconvenient. With @file{dirlist}, one may create the file
@file{/usr/share/aclocal/dirlist}
+@noindent
which contains only the single line
@file{/usr/local/share/aclocal}
Now, the ``default'' search path on the affected system is
@enumerate
-@item @file{/usr/local/share/aclocal/}
@item @file{/usr/share/aclocal-1.6/}
@item @file{/usr/share/aclocal/}
+@item @file{/usr/local/share/aclocal/}
@end enumerate
-without the need for @code{-I} options; @code{-I} options can be reserved
+without the need for @code{-I} options; @code{-I} options can be reserved
for project-specific needs (@file{my-source-dir/m4/}), rather than
using it to work around local system-dependent tool installation
directories.
+Similarly, @file{dirlist} can be handy if you have installed a local
+copy Automake on your account and want @command{aclocal} to look for
+macros installed at other places on the system.
+
@node Macros, Extending aclocal, Invoking aclocal, configure
@section Autoconf macros supplied with Automake