From: Alexandre Duret-Lutz Date: Thu, 1 Aug 2002 22:24:33 +0000 (+0000) Subject: * aclocal.in (parse_arguments): Add `dirlist' paths add the X-Git-Tag: v1.10.2~1247 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ffe5585bb84b0ba4a95d68ea97aee39a77fbecf;p=platform%2Fupstream%2Fautomake.git * aclocal.in (parse_arguments): Add `dirlist' paths add the very end of the search path, after aclocal-APIVERSION/ and aclocal/. * automake.texi (Macro search path): Adjust to reflect the new ordering. * tests/dirlist.test: Check for this. --- diff --git a/ChangeLog b/ChangeLog index 12a441c07..366ad8884 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2002-08-01 Alexandre Duret-Lutz + + * aclocal.in (parse_arguments): Add `dirlist' paths add the + very end of the search path, after aclocal-APIVERSION/ and + aclocal/. + * automake.texi (Macro search path): Adjust to reflect the + new ordering. + * tests/dirlist.test: Check for this. + 2002-07-31 Charles Wilson * aclocal.in (parse_arguments): Add support for extending diff --git a/aclocal.in b/aclocal.in index c938e42fa..089667420 100644 --- a/aclocal.in +++ b/aclocal.in @@ -184,6 +184,19 @@ sub parse_arguments $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 () @@ -196,22 +209,11 @@ sub parse_arguments 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; } diff --git a/automake.texi b/automake.texi index 95b48d3bd..16464e112 100644 --- a/automake.texi +++ b/automake.texi @@ -1341,7 +1341,7 @@ search around. Also, the @code{aclocal} mechanism allows other packages 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}. @@ -1417,15 +1417,15 @@ directories, in this order: @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 @@ -1442,9 +1442,9 @@ can be used to change or extend this search path. @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 @@ -1457,7 +1457,7 @@ needed by end-users. @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: @@ -1469,15 +1469,15 @@ Any extra directories specified using @code{-I} options @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 @@ -1485,47 +1485,47 @@ For example, suppose /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} @@ -1533,16 +1533,20 @@ which contains only the single line 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 diff --git a/tests/dirlist.test b/tests/dirlist.test index 51463cab6..c3868e238 100755 --- a/tests/dirlist.test +++ b/tests/dirlist.test @@ -5,6 +5,8 @@ . $srcdir/defs || exit 1 +set -e + cat > configure.in <>dirlist-test/dirlist-check.m4 << 'END' +cat >dirlist-test/dirlist-check.m4 <<'END' AC_DEFUN([AM_INIT_GUILE_MODULE],[ . $srcdir/../GUILE-VERSION AM_INIT_AUTOMAKE($PACKAGE, $VERSION) @@ -21,6 +23,16 @@ module=[$1] AC_SUBST(module)]) END -$ACLOCAL || exit 1 +cat >dirlist-test/init.m4 <