automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] {maint} aclocal: more granularity in acdir overriding


From: Stefano Lattarini
Subject: [PATCH] {maint} aclocal: more granularity in acdir overriding
Date: Tue, 6 Sep 2011 15:15:43 +0200

Before this change, using the `--acdir' option caused aclocal to
redefine both the directory of automake-provided m4 macros and the
directory of third-party system-wide m4 macros.  With this change,
we deprecate the `--acdir' aclocal option, and introduce two new
options `--automake-acdir' and `--system-acdir', to allow for more
granularity.

The main purpose of this change is to make the setup of aclocal
under the testsuite more similar to the setup in the real-world
usages (that is, with acdir != acdir-APIVERSION), to allow better
testability of features like `dirlist' file (and hopefully of a
soon-to-be-reproposed ACLOCAL_PATH support), and to allow the
rewriting of few test cases to have them work also when doing
a "make installcheck" (this is for the testsuite-work branch only,
though).

BTW, the previously-proposed patch series introducing ACLOCAL_PATH
support can be found in this thread:

 <http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00089.html>

and one can find in there a suggestion from Ralf Wildenhues that seems
to show that the idea of the present patch might indeed be sane and
useful after all :-)

 ``If the only reason is that --acdir doesn't accurately reflect
   what would happen after 'make install', maybe we can instead
   fix --acdir?''
 <http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00146.html>

I will push the present patch in a couple of days.

* aclocal.in (@automake_includes, @system_includes,
@user_includes): Fix and extend comments.
(usage): Update.
(handle_acdir_option): New function.
(parse_arguments): Recognize new options `--system-acdir' and
`automake-acdir', and handle `--acdir' using the new function
above.  Simplify logic by assuming that the directory of
third-party system-wide m4 files always exists.
* tests/aclocal.in: Update to use the new options, instead of
the deprecated. `--acdir'.
* m4/dirlist: Move ...
* m4/acdir/dirlist: ... here.
* m4/Makefile.am (EXTRA_DIST): Update.
(m4datadir): Rename ...
(automake_acdir): ... to this.  Accordingly, ...
(dist_m4data_DATA): ... rename this ...
(dist_automake_ac_DATA): ... to this.
(system_acdir): New, directory.
(dist_system_ac_DATA): New, defined to an empty value; this will
ensure that the $(system_acdir) directory will be created by
"make install".
* tests/aclocal.test: Remove check about the `--print-ac-dir'
option of aclocal, it has been moved into ...
* tests/aclocal-print-acdir.test: ... this new test, and quite
extended.
* tests/aclocal-acdir.test: New test.
* tests/Makefile.am (TESTS): Add the new tests.
* NEWS, bootstrap: Update.
* doc/automake.texi (aclocal Options, Macro Search Path): Update.
---
 ChangeLog                      |   39 +++++++++++++++++
 NEWS                           |    8 ++++
 aclocal.in                     |   74 ++++++++++++++++-----------------
 bootstrap                      |    4 +-
 doc/automake.texi              |   58 +++++++++++++------------
 m4/Makefile.am                 |   12 ++++--
 m4/Makefile.in                 |   84 ++++++++++++++++++++++++------------
 m4/{ => acdir}/dirlist         |    0
 tests/Makefile.am              |    2 +
 tests/Makefile.in              |    2 +
 tests/aclocal-acdir.test       |   91 ++++++++++++++++++++++++++++++++++++++++
 tests/aclocal-print-acdir.test |   35 +++++++++++++++
 tests/aclocal.in               |    6 +-
 tests/aclocal.test             |    6 +--
 14 files changed, 315 insertions(+), 106 deletions(-)
 rename m4/{ => acdir}/dirlist (100%)
 create mode 100755 tests/aclocal-acdir.test
 create mode 100755 tests/aclocal-print-acdir.test

diff --git a/ChangeLog b/ChangeLog
index add6c9c..dab9ea2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,42 @@
+2011-09-06  Stefano Lattarini  <address@hidden>
+
+       aclocal: more granularity in acdir overriding
+       Before this change, using the `--acdir' option caused aclocal to
+       redefine both the directory of automake-provided m4 macros and the
+       directory of third-party system-wide m4 macros.  With this change,
+       we deprecate the `--acdir' aclocal option, and introduce two new
+       options `--automake-acdir' and `--system-acdir', to allow for more
+       granularity.
+       * aclocal.in (@automake_includes, @system_includes,
+       @user_includes): Fix and extend comments.
+       (usage): Update.
+       (handle_acdir_option): New function.
+       (parse_arguments): Recognize new options `--system-acdir' and
+       `automake-acdir', and handle `--acdir' using the new function
+       above.  Simplify logic by assuming that the directory of
+       third-party system-wide m4 files always exists.
+       * tests/aclocal.in: Update to use the new options, instead of
+       the deprecated. `--acdir'.
+       * m4/dirlist: Move ...
+       * m4/acdir/dirlist: ... here.
+       * m4/Makefile.am (EXTRA_DIST): Update.
+       (m4datadir): Rename ...
+       (automake_acdir): ... to this.  Accordingly, ...
+       (dist_m4data_DATA): ... rename this ...
+       (dist_automake_ac_DATA): ... to this.
+       (system_acdir): New, directory.
+       (dist_system_ac_DATA): New, defined to an empty value; this will
+       ensure that the $(system_acdir) directory will be created by
+       "make install".
+       * tests/aclocal.test: Remove check about the `--print-ac-dir'
+       option of aclocal, it has been moved into ...
+       * tests/aclocal-print-acdir.test: ... this new test, and quite
+       extended.
+       * tests/aclocal-acdir.test: New test.
+       * tests/Makefile.am (TESTS): Add the new tests.
+       * NEWS, bootstrap: Update.
+       * doc/automake.texi (aclocal Options, Macro Search Path): Update.
+
 2011-09-04 Stefano Lattarini  <address@hidden>
 
        fix: list test 'vala-vpath.test' in XFAIL_TESTS
diff --git a/NEWS b/NEWS
index 5086f75..776650d 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,14 @@ New in 1.11.0a:
   - The Automake support for automatic de-ANSI-fication will be removed in
     the next major Automake release (1.12).
 
+  - The `--acdir' option of aclocal is deprecated, and will probably be
+    removed in the next major Automake release (1.12).
+
+* Changes to aclocal:
+
+  - The `--acdir' option is deprecated.  Now you should use th new options
+    `--automake-acdir' and `--system-acdir' instead.
+
 * Miscellaneous changes:
 
   - The `lzma' compression scheme and associated automake option `dist-lzma'
diff --git a/aclocal.in b/aclocal.in
index 4b63c1a..8b31bdc 100644
--- a/aclocal.in
+++ b/aclocal.in
@@ -54,9 +54,11 @@ $perl_threads = 0;
 # Include paths for searching macros.  We search macros in this order:
 # user-supplied directories first, then the directory containing the
 # automake macros, and finally the system-wide directories for
-# third-party macro.  @user_includes can be augmented with -I.
-# @system_includes can be augmented with the `dirlist' file.  Also
-# --acdir will reset both @automake_includes and @system_includes.
+# third-party macros.
+# @user_includes can be augmented with -I.
+# @automake_includes can be reset with the `--automake-acdir' option.
+# @system_includes can be augmented with the `dirlist' file, and reset
+# with the `--system-acdir' option.
 my @user_includes = ();
 my @automake_includes = ("@datadir@/aclocal-$APIVERSION");
 my @system_includes = ('@datadir@/aclocal');
@@ -877,7 +879,8 @@ sub usage ($)
 Generate `aclocal.m4' by scanning `configure.ac' or `configure.in'
 
 Options:
-      --acdir=DIR           directory holding config files (for debugging)
+      --automake-acdir=DIR  directory holding automake-provided m4 files
+      --system-acdir=DIR    directory holding third-party system-wide files
       --diff[=COMMAND]      run COMMAND [diff -u] on M4 files that would be
                               changed (implies --install and --dry-run)
       --dry-run             pretend to, but do not actually update any file
@@ -886,7 +889,8 @@ Options:
   -I DIR                    add directory to search list for .m4 files
       --install             copy third-party files to the first -I directory
       --output=FILE         put output in FILE (default aclocal.m4)
-      --print-ac-dir        print name of directory holding m4 files, then exit
+      --print-ac-dir        print name of directory holding system-wide
+                              third-party m4 files, then exit
       --verbose             don't be silent
       --version             print version number, then exit
   -W, --warnings=CATEGORY   report the warnings falling in CATEGORY
@@ -923,6 +927,15 @@ EOF
   exit 0;
 }
 
+# Using --acdir overrides both the automake (versioned) directory and
+# the public (unversioned) system directory.  This usage is obsolete.
+sub handle_acdir_option ($$)
+{
+  msg 'obsolete', '', "`--acdir' is deprecated\n";
+  @system_includes = ($_[1]);
+  @automake_includes = ();
+}
+
 # Parse command line.
 sub parse_arguments ()
 {
@@ -931,12 +944,9 @@ sub parse_arguments ()
 
   my %cli_options =
     (
-     'acdir=s'         => sub # Setting --acdir overrides both the
-                             { # automake (versioned) directory and the
-                              # public (unversioned) system directory.
-                              @automake_includes = ();
-                              @system_includes = ($_[1])
-                            },
+     'acdir=s'         => \&handle_acdir_option,
+     'system-acdir=s'  => sub { shift; @system_includes = @_; },
+     'automake-acdir=s'        => sub { shift; @automake_includes = @_; },
      'diff:s'          => \$diff_command,
      'dry-run'         => \$dry_run,
      'force'           => \$force_output,
@@ -1017,34 +1027,22 @@ sub parse_arguments ()
             . "\nfirst -I option, but no -I was supplied.");
     }
 
-  if (! -d $system_includes[0])
+  # Finally, adds any directory listed in the `dirlist' file.
+  if (open (DIRLIST, "$system_includes[0]/dirlist"))
     {
-      # 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.  (We know
-      # @system_includes has its default value if @automake_includes
-      # is not empty, because --acdir is the only way to change this.)
-      @system_includes = () if @automake_includes;
-    }
-  else
-    {
-      # Finally, adds any directory listed in the `dirlist' file.
-      if (open (DIRLIST, "$system_includes[0]/dirlist"))
-       {
-         while (<DIRLIST>)
-           {
-             # Ignore '#' lines.
-             next if /^#/;
-             # strip off newlines and end-of-line comments
-             s/\s*\#.*$//;
-             chomp;
-             foreach my $dir (glob)
-               {
-                 push (@system_includes, $dir) if -d $dir;
-               }
-           }
-         close (DIRLIST);
-       }
+      while (<DIRLIST>)
+        {
+          # Ignore '#' lines.
+          next if /^#/;
+          # strip off newlines and end-of-line comments
+          s/\s*\#.*$//;
+          chomp;
+          foreach my $dir (glob)
+            {
+              push (@system_includes, $dir) if -d $dir;
+            }
+        }
+      close (DIRLIST);
     }
 }
 
diff --git a/bootstrap b/bootstrap
index 9f1a8d8..c0043a3 100755
--- a/bootstrap
+++ b/bootstrap
@@ -109,7 +109,9 @@ $BOOTSTRAP_SHELL ./gen-parallel-tests > parallel-tests.am
 cd ..
 
 # Run the autotools.
-$PERL ./aclocal.tmp -I m4
+# Use `-I' here so that our own *.m4 files in m4/ gets included,
+# not copied, in aclocal.m4.
+$PERL ./aclocal.tmp -I m4 --automake-acdir m4 --system-acdir m4/acdir
 $AUTOCONF
 $PERL ./automake.tmp
 
diff --git a/doc/automake.texi b/doc/automake.texi
index 3be8578..bf2c872 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -3186,10 +3186,21 @@ overridden using the @env{AUTOM4TE} environment 
variable.
 @command{aclocal} accepts the following options:
 
 @table @code
address@hidden address@hidden
address@hidden --automake-acdir
+Look for the automake-provided macro files in @var{dir} instead of
+in the installation directory.  This is typically used for debugging.
+
address@hidden address@hidden
address@hidden --system-acdir
+Look for the system-wide third-party macro files (and the special
address@hidden file) in @var{dir} instead of in the installation
+directory.  This is typically used for debugging.
+
 @item address@hidden
 @opindex --acdir
-Look for the macro files in @var{dir} instead of the installation
-directory.  This is typically used for debugging.
address@hidden shorthand for address@hidden@var{dir}
address@hidden''.  Will be removed in future aclocal versions.
 
 @item address@hidden
 @opindex --diff
@@ -3294,7 +3305,7 @@ directories, in this order:
 @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}.
+for example, for Automake 1.11.x, @var{APIVERSION} = @code{1.11}.
 
 @item @var{acdir}
 This directory is intended for third party @file{.m4} files, and is
@@ -3305,31 +3316,24 @@ value of @var{acdir}, use the @option{--print-ac-dir} 
option
 (@pxref{aclocal Options}).
 @end table
 
-As an example, suppose that @command{automake-1.6.2} was configured with
+As an example, suppose that @command{automake-1.11.2} was configured with
 @address@hidden/usr/local}.  Then, the search path would be:
 
 @enumerate
address@hidden @file{/usr/local/share/aclocal-1.6/}
address@hidden @file{/usr/local/share/aclocal-1.11.2/}
 @item @file{/usr/local/share/aclocal/}
 @end enumerate
 
+The paths for the @var{acdir} and @var{acdir-APIVERSION} directories can
+be changed respectively through aclocal options @option{--system-acdir}
+and @option{--automake-acdir} (@pxref{aclocal Options}).  Note however
+that these options are only intended for use by the internal Automake
+test suite, or for debugging under highly unusual situations; they are
+not ordinarily needed by end-users.
+
 As explained in (@pxref{aclocal Options}), there are several options that
 can be used to change or extend this search path.
 
address@hidden Modifying the Macro Search Path: @option{--acdir}
-
-The most erroneous option to modify the search path is
address@hidden@var{dir}}, which changes default directory and
-drops the @var{APIVERSION} directory.  For example, if one specifies
address@hidden/opt/private/}, then the search path becomes:
-
address@hidden
address@hidden @file{/opt/private/}
address@hidden enumerate
-
-This option, @option{--acdir}, is intended for use by the internal
-Automake test suite only; it is not ordinarily needed by end-users.
-
 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
 
 Any extra directories specified using @option{-I} options
@@ -3379,21 +3383,19 @@ Then, the search path would be
 @noindent
 and all directories with path names starting with @code{/test3}.
 
-If the @address@hidden option is used, then @command{aclocal}
-will search for the @file{dirlist} file in @var{dir}.  In the
address@hidden/opt/private/} example above, @command{aclocal} would look
-for @file{/opt/private/dirlist}.  Again, however, the @option{--acdir}
-option is intended for use by the internal Automake test suite only;
address@hidden is not ordinarily needed by end-users.
+If the @address@hidden option is used, then
address@hidden will search for the @file{dirlist} file in
address@hidden; but remember the warnings  above against the use of
address@hidden
 
 @file{dirlist} is useful in the following situation: suppose that
address@hidden version @code{1.6.2} is installed with
address@hidden version @code{1.11.2} is installed with
 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
 directories are
 
 @c @code looks better than @file here
 @enumerate
address@hidden @code{/usr/share/aclocal-1.6/}
address@hidden @code{/usr/share/aclocal-1.11/}
 @item @code{/usr/share/aclocal/}
 @end enumerate
 
@@ -3414,7 +3416,7 @@ Now, the ``default'' search path on the affected system is
 
 @c @code looks better than @file here
 @enumerate
address@hidden @code{/usr/share/aclocal-1.6/}
address@hidden @code{/usr/share/aclocal-1.11/}
 @item @code{/usr/share/aclocal/}
 @item @code{/usr/local/share/aclocal/}
 @end enumerate
diff --git a/m4/Makefile.am b/m4/Makefile.am
index 0cf074b..143df71 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -3,7 +3,7 @@
 ## Makefile for Automake m4.
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2011 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,9 +18,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-m4datadir = $(datadir)/aclocal-$(APIVERSION)
+automake_acdir = $(datadir)/aclocal-$(APIVERSION)
+system_acdir = $(datadir)/aclocal
 
-dist_m4data_DATA = \
+dist_automake_ac_DATA = \
 $(top_srcdir)/m4/amversion.m4 \
 as.m4 \
 auxdir.m4 \
@@ -59,7 +60,10 @@ tar.m4 \
 upc.m4 \
 vala.m4
 
-EXTRA_DIST = dirlist amversion.in
+# So that $(system_acdir) will be created by "make install".
+dist_system_ac_DATA =
+
+EXTRA_DIST = acdir/dirlist amversion.in
 
 # We build amversion.m4 here, instead of from config.status,
 # because config.status is rerun each time one of configure's
diff --git a/m4/Makefile.in b/m4/Makefile.in
index ff4dd43..2e7e547 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -16,7 +16,7 @@
 @SET_MAKE@
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2011 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -50,8 +50,8 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 subdir = m4
-DIST_COMMON = $(dist_m4data_DATA) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
+DIST_COMMON = $(dist_automake_ac_DATA) $(dist_system_ac_DATA) \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
        $(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
@@ -89,8 +89,9 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(m4datadir)"
-DATA = $(dist_m4data_DATA)
+am__installdirs = "$(DESTDIR)$(automake_acdir)" \
+       "$(DESTDIR)$(system_acdir)"
+DATA = $(dist_automake_ac_DATA) $(dist_system_ac_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -185,8 +186,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-m4datadir = $(datadir)/aclocal-$(APIVERSION)
-dist_m4data_DATA = \
+automake_acdir = $(datadir)/aclocal-$(APIVERSION)
+system_acdir = $(datadir)/aclocal
+dist_automake_ac_DATA = \
 $(top_srcdir)/m4/amversion.m4 \
 as.m4 \
 auxdir.m4 \
@@ -225,7 +227,10 @@ tar.m4 \
 upc.m4 \
 vala.m4
 
-EXTRA_DIST = dirlist amversion.in
+
+# So that $(system_acdir) will be created by "make install".
+dist_system_ac_DATA = 
+EXTRA_DIST = acdir/dirlist amversion.in
 all: all-am
 
 .SUFFIXES:
@@ -259,26 +264,46 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-install-dist_m4dataDATA: $(dist_m4data_DATA)
+install-dist_automake_acDATA: $(dist_automake_ac_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(automake_acdir)" || $(MKDIR_P) "$(DESTDIR)$(automake_acdir)"
+       @list='$(dist_automake_ac_DATA)'; test -n "$(automake_acdir)" || list=; 
\
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(automake_acdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(automake_acdir)" || exit $$?; \
+       done
+
+uninstall-dist_automake_acDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_automake_ac_DATA)'; test -n "$(automake_acdir)" || list=; 
\
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(automake_acdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(automake_acdir)" && rm -f $$files
+install-dist_system_acDATA: $(dist_system_ac_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)"
-       @list='$(dist_m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+       test -z "$(system_acdir)" || $(MKDIR_P) "$(DESTDIR)$(system_acdir)"
+       @list='$(dist_system_ac_DATA)'; test -n "$(system_acdir)" || list=; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
        while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(system_acdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(system_acdir)" || exit $$?; \
        done
 
-uninstall-dist_m4dataDATA:
+uninstall-dist_system_acDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+       @list='$(dist_system_ac_DATA)'; test -n "$(system_acdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(m4datadir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(m4datadir)" && rm -f $$files
+       echo " ( cd '$(DESTDIR)$(system_acdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(system_acdir)" && rm -f $$files
 tags: TAGS
 TAGS:
 
@@ -320,7 +345,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-       for dir in "$(DESTDIR)$(m4datadir)"; do \
+       for dir in "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(system_acdir)"; 
do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -373,7 +398,8 @@ info: info-am
 
 info-am:
 
-install-data-am: install-dist_m4dataDATA
+install-data-am: install-dist_automake_acDATA \
+       install-dist_system_acDATA
 
 install-dvi: install-dvi-am
 
@@ -417,21 +443,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_m4dataDATA
+uninstall-am: uninstall-dist_automake_acDATA \
+       uninstall-dist_system_acDATA
 
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic distclean \
        distclean-generic distdir dvi dvi-am html html-am info info-am \
        install install-am install-data install-data-am \
-       install-dist_m4dataDATA install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-dist_m4dataDATA
+       install-dist_automake_acDATA install-dist_system_acDATA \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+       uninstall-am uninstall-dist_automake_acDATA \
+       uninstall-dist_system_acDATA
 
 
 # We build amversion.m4 here, instead of from config.status,
diff --git a/m4/dirlist b/m4/acdir/dirlist
similarity index 100%
rename from m4/dirlist
rename to m4/acdir/dirlist
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 38f2319..f01a6dd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -71,6 +71,8 @@ acloca19.test \
 acloca20.test \
 acloca21.test \
 acloca22.test \
+aclocal-acdir.test \
+aclocal-print-acdir.test \
 acoutnoq.test \
 acoutpt.test \
 acoutpt2.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index ffb2fe2..eed1ef9 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -349,6 +349,8 @@ acloca19.test \
 acloca20.test \
 acloca21.test \
 acloca22.test \
+aclocal-acdir.test \
+aclocal-print-acdir.test \
 acoutnoq.test \
 acoutpt.test \
 acoutpt2.test \
diff --git a/tests/aclocal-acdir.test b/tests/aclocal-acdir.test
new file mode 100755
index 0000000..c5cc992
--- /dev/null
+++ b/tests/aclocal-acdir.test
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test aclocal's `--acdir', `--automake-acdir' and `--system-acdir'
+# options.  Also check that stuff in the automake acdir takes precedence
+# over stuff in the system acdir.
+
+. ./defs || Exit 1
+
+set -e
+
+mkdir am sys
+
+cat >> configure.in <<'END'
+MY_MACRO
+END
+
+cat > am/foo.m4 <<'END'
+AC_DEFUN([AM_INIT_AUTOMAKE], [fake--init--automake])
+END
+
+cat > sys/foo.m4 <<'END'
+AC_DEFUN([MY_MACRO], [my--macro])
+END
+
+$ACLOCAL --automake-acdir am
+$AUTOCONF
+$FGREP 'fake--init--automake' configure
+$FGREP 'MY_MACRO' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --system-acdir sys
+$AUTOCONF
+$FGREP 'am__api_version' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --automake-acdir am --system-acdir sys
+$AUTOCONF
+$FGREP 'fake--init--automake' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+$ACLOCAL --system-acdir sys --automake-acdir am
+$AUTOCONF
+$FGREP 'fake--init--automake' configure
+$FGREP 'my--macro' configure
+
+rm -rf autom4te*.cache
+
+# Stuff in automake acdir takes precedence over stuff in system acdir.
+cat > am/bar.m4 <<'END'
+AC_DEFUN([MY_MACRO], [am--macro])
+END
+$ACLOCAL --automake-acdir am --system-acdir sys
+$AUTOCONF
+$FGREP 'fake--init--automake' configure
+$FGREP 'am--macro' configure
+$FGREP 'my--macro' configure && Exit 1 # Just to be sure.
+
+# Obsolescent `--acdir' option.
+$ACLOCAL -Wobsolete --acdir am 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep '.*--acdir.*deprecated' stderr
+
+$ACLOCAL -Wno-obsolete --acdir am
+$AUTOCONF
+$FGREP 'fake--init--automake' configure
+$FGREP 'am--macro' configure
+
+$ACLOCAL -Wno-obsolete --acdir sys 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'macro .*AM_INIT_AUTOMAKE.* not found' stderr
+
+:
diff --git a/tests/aclocal-print-acdir.test b/tests/aclocal-print-acdir.test
new file mode 100755
index 0000000..368416c
--- /dev/null
+++ b/tests/aclocal-print-acdir.test
@@ -0,0 +1,35 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on aclocal's `--print-ac-dir' option.
+
+. ./defs || Exit 1
+
+set -e
+
+$ACLOCAL --print-ac-dir
+test "`$ACLOCAL --print-ac-dir`" = "$testaclocaldir/acdir"
+
+$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir
+test "`$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir`" = foo
+
+$ACLOCAL --system-acdir /bar --print-ac-dir
+test "`$ACLOCAL --system-acdir /bar --print-ac-dir`" = /bar
+
+$ACLOCAL --automake-acdir /bar --print-ac-dir
+test "`$ACLOCAL --automake-acdir /bar --print-ac-dir`" = 
"$testaclocaldir/acdir"
+
+:
diff --git a/tests/aclocal.in b/tests/aclocal.in
index f8aa1a7..5326ad0 100644
--- a/tests/aclocal.in
+++ b/tests/aclocal.in
@@ -12,6 +12,6 @@ fi
 
 perllibdir="@abs_top_builddir@/address@hidden@@abs_top_srcdir@/lib"
 export perllibdir
-# Most of the files are in $srcdir/../m4.  However amversion.m4 is
-# generated in ../m4, so we include that directory in the search path too.
-exec "@abs_top_builddir@/aclocal" "address@hidden@/m4" ${1+"$@"}
+
+exec "@abs_top_builddir@/aclocal" "address@hidden@/m4" \
+     "address@hidden@/m4/acdir" ${1+"$@"}
diff --git a/tests/aclocal.test b/tests/aclocal.test
index da80d08..439faa9 100755
--- a/tests/aclocal.test
+++ b/tests/aclocal.test
@@ -15,8 +15,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test to make sure that aclocal --output works.  Report from
-# Alexandre Oliva.
+# Test on some aclocal options.  Report from Alexandre Oliva.
+
 . ./defs || Exit 1
 
 set -e
@@ -41,6 +41,4 @@ grep '[Tt]ry.*--help.*for more information' stderr
 
 $ACLOCAL --versi
 
-test "`$ACLOCAL --print-ac-dir`" = "$testaclocaldir"
-
 :
-- 
1.7.2.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]