automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, msvc, updated. v1.11-652-g7


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, msvc, updated. v1.11-652-g7db422b
Date: Sun, 01 Jan 2012 19:15:12 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=7db422b23f1921c94a6eea7489b10b98fc7ef183

The branch, msvc has been updated
       via  7db422b23f1921c94a6eea7489b10b98fc7ef183 (commit)
       via  01fef4ae9e0ea43fba4a5cc836ad42f45805c6b8 (commit)
       via  280407599a72f8229c7b89d64b703e2dbc94cc87 (commit)
       via  2a461709e2be1394951a01fc9f08f6b4bacaad9b (commit)
       via  e637fa2a0b19cb2fd9b79f20bd46662a4ea9bcfb (commit)
       via  bbce9c2b229b4791974f0433c75b0bdd4ebc7c4e (commit)
       via  bff8cecacd4a9f5697fe9c5c0a72c29c0c8ca947 (commit)
       via  34feafeec134a7bdc99d1b261fd97e6c0c5ab716 (commit)
       via  0878bd3455f488f5c70f2ba92cc0139319026ec0 (commit)
       via  cec3f327d5b70c8dba59485f221813e281cc972c (commit)
       via  5f71f2b5b631f59f9244ec2ef93d6705a76aa917 (commit)
       via  3474910563edf9a0e4021b1c75c55b569bfc1f3e (commit)
       via  c87ceb55d579658ff47f1d99dfc23ca985fc1cd6 (commit)
       via  a2a44d35b70dbd65d6e019134780461c94a16db2 (commit)
       via  0eaa8781bf043b34aaae0309f17aeb7943dbe4c7 (commit)
       via  8493499b54da3694f820fa7eab5e58ef44448b66 (commit)
      from  4f3e5b5c883fb2cf867e9d7734690a283a1165ee (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 ChangeLog.11                     |   63 ++++++++++++++++
 NEWS                             |   13 ++++
 automake.in                      |   12 ++-
 doc/automake.texi                |   86 ++++++++++++++--------
 lib/Automake/Options.pm          |   10 +++-
 lib/am/distdir.am                |    9 +++
 m4/silent.m4                     |   34 ++++++++-
 tests/Makefile.am                |    2 +
 tests/acloca18.test              |   12 ++--
 tests/ar-lib3.test               |    1 +
 tests/defs.in                    |    2 +-
 tests/{nogzip.test => lzip.test} |   14 ++--
 tests/lzma.test                  |   22 +++++-
 tests/python11.test              |    6 +-
 tests/silent-nested-vars.test    |  149 ++++++++++++++++++++++++++++++++++++++
 tests/silent6.test               |   14 +++-
 16 files changed, 387 insertions(+), 62 deletions(-)
 copy tests/{nogzip.test => lzip.test} (79%)
 create mode 100755 tests/silent-nested-vars.test

diff --git a/ChangeLog.11 b/ChangeLog.11
index cde6c86..ba43734 100644
--- a/ChangeLog.11
+++ b/ChangeLog.11
@@ -74,6 +74,69 @@
        respectively.
        * NEWS: Update.
 
+2011-12-26  Stefano Lattarini  <address@hidden>
+
+       tests: tweak tests on silent-rules for makes without nested vars
+       * tests/silent-nested-vars.test: Define $MAKE to `./mymake' in
+       the environment, so that it will be automatically picked up by
+       configure.  Related tweaks and simplifications.
+       Remove the checks verifying that silent rules are respected also
+       when the 'subdir-objects' option is set, the checks testing the
+       old syntax for user-defined silent rules, and the tests using
+       the default $MAKE programs: they are redundant w.r.t. other test
+       cases.  Related simplifications.
+       Remove the temporary files used in a sanity check as soon as they
+       are not needed anymore.
+       Do not capture also the standard error of configure: we only want
+       to grep its standard output.
+       Consistently use `stdout' for the name of files where to save the
+       standard output captured from make and configure, for consistency
+       with other tests.
+       Make grepping of configure output and of the generated Makefile
+       stricter.
+       Improve and tweak the `mymake' script a little.
+       * tests/silent6.test: Make grepping of make stdout slightly
+       stricter.  After having configured with silent rules disabled,
+       try to force the use silent rules with `make V=1'.
+
+2011-12-25  Paul Eggert  <address@hidden>
+
+       silent-rules: fallback for makes without nested vars
+
+       This fixes two problems reported for Automake (Bug#9928, Bug#10237)
+       and is in response to a bug report for building coreutils on HP
+       NonStop OS (Bug#10234).  The problem is that HP NonStop 'make'
+       treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that
+       expands a macro with the funny name am__v_CC_$(V instead of the
+       desired name am__v_CC_1 or am__v_CC_0, and since the funny macro
+       is not defined the line is equivalent to "AM_V_CC = )"; this
+       inserts a stray ")" when $(AM_V_CC) is used, which eventually
+       causes 'make' to fail.
+
+       The basic idea is that instead of generating Makefile.in lines like
+       "AM_V_CC = $(am__v_CC_$(V))", we generate
+       "AM_V_CC = $(address@hidden@)".  We then AC_SUBST $(V) for @AM_V@
+       in the usual case where `make' supports nested variables,
+       and substitute 1 (or 0) otherwise.  Similarly for usages like
+       $(am__v_CC_$(AM_DEFAULT_VERBOSITY)).
+
+       With this change, make implementations that doesn't grasp nested
+       variable expansions will still be able to run Makefiles generated
+       using the silent-rules option.  They won't allow the user to
+       override the make verbosity at runtime through redefinition of
+       $(V) (as in "make V=0"); but this is still an improvement over not
+       being able to work at all.
+
+       * NEWS: Document this.
+       * automake.in (define_verbose_var): When defining the variables,
+       use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than
+       $(AM_DEFAULT_VERBOSITY).
+       * doc/automake.texi (Automake silent-rules Option): Explain new system.
+       * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports
+       nested variables, and substitute AM_V and AM_DEFAULT_V accordingly.
+       * tests/silent-nested-vars.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
 2011-12-24  Stefano Lattarini  <address@hidden>
 
        gitignore: use only one .gitignore file, in the top-level directory
diff --git a/NEWS b/NEWS
index 2b21b70..21be8ac 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,10 @@ New in 1.11.0a:
 
 * WARNING: Future backward-incompatibilities!
 
+  - The `lzma' compression format for distribution archives has been
+    deprecated in favor of `xz' and `lzip', and will be removed in the
+    next major Automake release (1.12).
+
   - The Automake support for automatic de-ANSI-fication will be removed in
     the next major Automake release (1.12).
 
@@ -28,6 +32,8 @@ New in 1.11.0a:
 
 * Miscellaneous changes:
 
+  - "make dist" can now create lzip-compressed tarballs.
+
   - In the Automake info documentation, the Top node and the nodes about
     the invocation of the automake and aclocal programs have been renamed;
     now, calling "info automake" will open the Top node, while calling
@@ -98,6 +104,13 @@ Bugs fixed in 1.11.0a:
     not used, `make' output no longer contains spurious backslash-only
     lines, thus once again matching what Automake did before 1.11.
 
+  - The `silent-rules' option now generates working makefiles even for
+    the uncommon `make' implementations that do not support the
+    nested-variables extension to POSIX 2008.  For such `make'
+    implementations, whether a build is silent is determined at
+    configure time, and cannot be overridden at make time with
+    `make V=0' or `make V=1'.
+
   - The AM_COND_IF macro also works if the shell expression for the conditional
     is no longer valid for the condition.
 
diff --git a/automake.in b/automake.in
index c61e6c3..e178642 100644
--- a/automake.in
+++ b/automake.in
@@ -1164,9 +1164,12 @@ sub define_verbose_var ($$)
     my $silent_var = $pvar . '_0';
     if (option 'silent-rules')
       {
-       # Using `$V' instead of `$(V)' breaks IRIX make.
-       define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL);
-       define_variable ($pvar . '_', '$(' . $pvar . 
'_$(AM_DEFAULT_VERBOSITY))', INTERNAL);
+       # For typical `make's, `configure' replaces AM_V (inside @@) with $(V)
+       # and AM_DEFAULT_V (inside @@) with $(AM_DEFAULT_VERBOSITY).
+       # For strict POSIX 2008 `make's, it replaces them with 0 or 1 instead.
+       # See AM_SILENT_RULES in m4/silent.m4.
+       define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL);
+       define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_DEFAULT_V'.'@)', 
INTERNAL);
        Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val,
                                    '', INTERNAL, VAR_ASIS)
          if (! vardef ($silent_var, TRUE));
@@ -3935,7 +3938,7 @@ sub handle_dist ()
     {
       my $archive_defined = option 'no-dist-gzip' ? 0 : 1;
       $archive_defined ||=
-       grep { option "dist-$_" } qw(shar zip tarZ bzip2 lzma xz);
+       grep { option "dist-$_" } qw(shar zip tarZ bzip2 lzip lzma xz);
       error (option 'no-dist-gzip',
             "no-dist-gzip specified but no dist-* specified, "
             . "at least one archive format must be enabled")
@@ -7141,6 +7144,7 @@ sub make_paragraphs ($%)
 
                 'XZ'          => !! option 'dist-xz',
                 'LZMA'        => !! option 'dist-lzma',
+                'LZIP'        => !! option 'dist-lzip',
                 'BZIP2'       => !! option 'dist-bzip2',
                 'COMPRESS'    => !! option 'dist-tarZ',
                 'GZIP'        =>  ! option 'no-dist-gzip',
diff --git a/doc/automake.texi b/doc/automake.texi
index e6dd2cf..bc19ad0 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -45,8 +45,8 @@ section entitled ``GNU Free Documentation License.''
 
 @dircategory Individual utilities
 @direntry
-* aclocal-invocation: (automake)Invoking aclocal.    Generating aclocal.m4.
-* automake-invocation: (automake)Invoking Automake.  Generating Makefile.in.
+* aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
+* automake-invocation: (automake)automake Invocation. Generating Makefile.in.
 @end direntry
 
 @titlepage
@@ -99,7 +99,7 @@ section entitled ``GNU Free Documentation License.''
 * Autotools Introduction::      An Introduction to the Autotools
 * Generalities::                General ideas
 * Examples::                    Some example packages
-* Invoking Automake::           Creating a Makefile.in
+* automake Invocation::         Creating a Makefile.in
 * configure::                   Scanning configure.ac, using aclocal
 * Directories::                 Declaring subdirectories
 * Programs::                    Building programs and libraries
@@ -178,7 +178,7 @@ Scanning @file{configure.ac}, using @command{aclocal}
 
 * Requirements::                Configuration requirements
 * Optional::                    Other things Automake recognizes
-* Invoking aclocal::            Auto-generating aclocal.m4
+* aclocal Invocation::          Auto-generating aclocal.m4
 * Macros::                      Autoconf macros supplied with Automake
 
 Auto-generating aclocal.m4
@@ -2500,13 +2500,17 @@ with different flags.  In this instance, the names of 
the object files
 would be chosen by automake; they would be @file{false-true.o} and
 @file{true-true.o}. (The name of the object files rarely matters.)
 
-
address@hidden Invoking Automake
address@hidden automake Invocation
 @chapter Creating a @file{Makefile.in}
address@hidden This node used to be named "Invoking automake".  This @anchor
address@hidden allows old links to still work.
address@hidden automake}
 
 @cindex Multiple @file{configure.ac} files
 @cindex Invoking @command{automake}
 @cindex @command{automake}, invoking
address@hidden Invocation of @command{automake}
address@hidden @command{automake}, invocation
 
 To create all the @file{Makefile.in}s for a package, run the
 @command{automake} program in the top level directory, with no
@@ -2746,7 +2750,7 @@ easier.  These macros can automatically be put into your
 @menu
 * Requirements::                Configuration requirements
 * Optional::                    Other things Automake recognizes
-* Invoking aclocal::            Auto-generating aclocal.m4
+* aclocal Invocation::          Auto-generating aclocal.m4
 * Macros::                      Autoconf macros supplied with Automake
 @end menu
 
@@ -3116,16 +3120,19 @@ appear as dependencies in @file{Makefile} rules.
 
 @code{m4_include} is seldom used by @file{configure.ac} authors, but
 can appear in @file{aclocal.m4} when @command{aclocal} detects that
-some required macros come from files local to your package (as opposed
-to macros installed in a system-wide directory, @pxref{Invoking
-aclocal}).
+some required macros come from files local to your package (as opposed to
+macros installed in a system-wide directory, @pxref{aclocal Invocation}).
 
 @end ftable
 
-
address@hidden Invoking aclocal
address@hidden aclocal Invocation
 @section Auto-generating aclocal.m4
address@hidden This node used to be named "Invoking automake".  This @anchor
address@hidden allows old links to still work.
address@hidden aclocal}
 
address@hidden Invocation of @command{aclocal}
address@hidden @command{aclocal}, Invocation
 @cindex Invoking @command{aclocal}
 @cindex @command{aclocal}, Invoking
 
@@ -3308,7 +3315,7 @@ All warnings are output by default.
 
 @vindex WARNINGS
 The environment variable @env{WARNINGS} is honored in the same
-way as it is for @command{automake} (@pxref{Invoking Automake}).
+way as it is for @command{automake} (@pxref{automake Invocation}).
 
 @end table
 
@@ -8688,11 +8695,16 @@ environment variable.  For example, @samp{make 
dist-bzip2 BZIP2=-7}.
 Generate a gzip tar archive of the distribution.
 @trindex dist-gzip
 
address@hidden @code{dist-lzma}
-Generate an @samp{lzma} tar archive of the distribution.  @command{lzma}
address@hidden @code{dist-lzip}
+Generate a @samp{lzip} tar archive of the distribution.  @command{lzip}
 archives are frequently smaller than @command{bzip2}-compressed archives.
address@hidden dist-lzip
+
address@hidden @code{dist-lzma}
+Generate an @samp{lzma} tar archive of the distribution.
 The @samp{lzma} format is obsolete, you should use the @samp{xz} format
-instead.
+instead. @emph{Support for @samp{lzma}-compressed archives will be
+removed in the next major Automake release.}
 @trindex dist-lzma
 
 @item @code{dist-shar}
@@ -9300,6 +9312,12 @@ Cause @command{dejagnu}-specific rules to be generated.  
@xref{DejaGnu Tests}.
 Hook @code{dist-bzip2} to @code{dist}.
 @trindex dist-bzip2
 
address@hidden @option{dist-lzip}
address@hidden Option, @option{dist-lzip}
address@hidden dist-lzip
+Hook @code{dist-lzip} to @code{dist}.
address@hidden dist-lzip
+
 @item @option{dist-lzma}
 @cindex Option, @option{dist-lzma}
 @opindex dist-lzma
@@ -9500,7 +9518,8 @@ In order to use this option with C sources, you should add
 These three mutually exclusive options select the tar format to use
 when generating tarballs with @samp{make dist}.  (The tar file created
 is then compressed according to the set of @option{no-dist-gzip},
address@hidden, @option{dist-xz} and @option{dist-tarZ} options in use.)
address@hidden, @option{dist-lzip}, @option{dist-xz} and
address@hidden options in use.)
 
 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
 (@pxref{Macros}) because they can require additional configure checks.
@@ -9552,7 +9571,7 @@ will be suppressed.
 @cindex Option, @address@hidden
 @cindex Option, @address@hidden
 These options behave exactly like their command-line counterpart
-(@pxref{Invoking Automake}).  This allows you to enable or disable some
+(@pxref{automake Invocation}).  This allows you to enable or disable some
 warning categories on a per-file basis.  You can also setup some warnings
 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
 in your @file{configure.ac}.
@@ -10160,18 +10179,23 @@ For portability to different @command{make} 
implementations, package authors
 are advised to not set the variable @code{V} inside the @file{Makefile.am}
 file, to allow the user to override the value for subdirectories as well.
 
-The current implementation of this feature relies on a non-POSIX, but in
-practice rather widely supported @file{Makefile} construct of nested
-variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
address@hidden option if your package needs to build with
address@hidden implementations that do not support it.  The
address@hidden option turns off warnings about recursive variable
-expansion, which are in turn enabled by @option{-Wportability}
-(@pxref{Invoking Automake}).
+The current implementation of this feature normally uses nested
+variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature
+that is not required by POSIX 2008 but is widely supported in
+practice.  The @option{silent-rules} option thus turns off warnings
+about recursive variable expansion, which are in turn enabled by
address@hidden (@pxref{automake Invocation}).  On the rare
address@hidden implementations that do not support nested variable
+expansion, whether rules are silent is always determined at configure
+time, and cannot be overridden at make time.  Future versions of POSIX
+are likely to require nested variable expansion, so this minor
+limitation should go away with time.
 
 @vindex @code{AM_V_GEN}
 @vindex @code{AM_V_at}
 @vindex @code{AM_DEFAULT_VERBOSITY}
address@hidden @code{AM_V}
address@hidden @code{AM_DEFAULT_V}
 To extend the silent mode to your own rules, you have two choices:
 
 @itemize @bullet
@@ -10187,8 +10211,8 @@ The following snippet shows how you would define your 
own equivalent of
 @code{AM_V_GEN}:
 
 @example
-pkg_verbose = $(pkg_verbose_$(V))
-pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY))
+pkg_verbose = $(pkg_verbose_@@AM_V@@)
+pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@)
 pkg_verbose_0 = @@echo PKG-GEN $@@;
 
 foo: foo.in
@@ -10387,7 +10411,7 @@ These overriding semantics make it possible to fine 
tune some default
 settings of Automake, or replace some of its rules.  Overriding
 Automake rules is often inadvisable, particularly in the topmost
 directory of a package with subdirectories.  The @option{-Woverride}
-option (@pxref{Invoking Automake}) comes in handy to catch overridden
+option (@pxref{automake Invocation}) comes in handy to catch overridden
 definitions.
 
 Note that Automake does not make any distinction between rules with
@@ -10835,7 +10859,7 @@ autoreconf -vfi
 @end example
 
 The use of @option{--force-missing} ensures that auxiliary tools will be
-overridden by new versions (@pxref{Invoking Automake}).
+overridden by new versions (@pxref{automake Invocation}).
 
 It is important to regenerate all these files each time Automake is
 upgraded, even between bug fixes releases.  For instance, it is not
@@ -13559,4 +13583,4 @@ parentheses is the number of generated test cases.
 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
address@hidden  LocalWords:  barexec Pinard's automatize initialize lzma xz
address@hidden  LocalWords:  barexec Pinard's automatize initialize lzip lzma xz
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
index b7ff3d1..e3d23ae 100644
--- a/lib/Automake/Options.pm
+++ b/lib/Automake/Options.pm
@@ -261,10 +261,18 @@ sub _process_option_list (\%$@)
          # directory.  We save the actual option for later.
          $options->{'ansi2knr'} = [$_, $where];
        }
+      elsif ($_ eq 'dist-lzma')
+        {
+          # Creation of distribution tarball compressed with lzma is
+          # deprecated, will be removed in the next major release.
+          msg 'obsolete', $where,
+              "lzma compression is deprecated; use `dist-xz' " .
+              "or `dist-lzip' instead\n";
+        }
       elsif ($_ eq 'no-installman' || $_ eq 'no-installinfo'
             || $_ eq 'dist-shar' || $_ eq 'dist-zip'
             || $_ eq 'dist-tarZ' || $_ eq 'dist-bzip2'
-            || $_ eq 'dist-lzma' || $_ eq 'dist-xz'
+            || $_ eq 'dist-lzip' || $_ eq 'dist-xz'
             || $_ eq 'no-dist-gzip' || $_ eq 'no-dist'
             || $_ eq 'dejagnu' || $_ eq 'no-texinfo.tex'
             || $_ eq 'readme-alpha' || $_ eq 'check-news'
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index f685ec1..a681101 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -344,6 +344,12 @@ dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
        $(am__remove_distdir)
 
+?LZIP?DIST_ARCHIVES += $(distdir).tar.lz
+.PHONY: dist-lzip
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} 
>$(distdir).tar.lz
+       $(am__remove_distdir)
+
 ?LZMA?DIST_ARCHIVES += $(distdir).tar.lzma
 .PHONY: dist-lzma
 dist-lzma: distdir
@@ -396,6 +402,7 @@ endif %?SUBDIRS%
 dist dist-all: distdir
 ?GZIP? tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c 
>$(distdir).tar.gz
 ?BZIP2?        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c 
>$(distdir).tar.bz2
+?LZIP? tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} 
>$(distdir).tar.lz
 ?LZMA? tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
 ?XZ?   tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c 
>$(distdir).tar.xz
 ?COMPRESS?     tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
@@ -429,6 +436,8 @@ distcheck: dist
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
        *.tar.lzma*) \
          lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
          xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
diff --git a/m4/silent.m4 b/m4/silent.m4
index 6d2a1a2..8bd931b 100644
--- a/m4/silent.m4
+++ b/m4/silent.m4
@@ -1,11 +1,11 @@
 ##                                                          -*- Autoconf -*-
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
+# serial 2
 
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
@@ -20,6 +20,36 @@ yes) AM_DEFAULT_VERBOSITY=0;;
 no)  AM_DEFAULT_VERBOSITY=1;;
 *)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
 AM_BACKSLASH='\'
 AC_SUBST([AM_BACKSLASH])dnl
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8894fcf..52b5114 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -569,6 +569,7 @@ ltinstloc.test \
 ltlibobjs.test \
 ltlibsrc.test \
 ltorder.test \
+lzip.test \
 lzma.test \
 m4-inclusion.test \
 maintclean.test \
@@ -779,6 +780,7 @@ silent-many-gcc.test \
 silent-many-generic.test \
 silent-lex-gcc.test \
 silent-lex-generic.test \
+silent-nested-vars.test \
 silent-yacc-gcc.test \
 silent-yacc-generic.test \
 silent-configsite.test \
diff --git a/tests/acloca18.test b/tests/acloca18.test
index 5032a8d..de99786 100755
--- a/tests/acloca18.test
+++ b/tests/acloca18.test
@@ -59,33 +59,33 @@ $AUTOCONF
 grep macro11 foo
 grep macro21 foo
 
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL  -I 1 -I 2 -I 3 -I 4 --install
 $AUTOCONF
 ./configure
 grep macro12 foo
 grep macro23 foo
 
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL -I 4 -I 1 -I 2 -I 3 --install --dry-run
 $AUTOCONF
 ./configure
 grep macro12 foo
 grep macro23 foo
 
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL -I 4 -I 1 -I 2 -I 3 --install
 $AUTOCONF
 ./configure
 grep macro14 foo
 grep macro23 foo
 
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL -I 4 -I 1 -I 2 --install 2>stderr && { cat stderr >&2; Exit 1; }
 cat stderr >&2
 grep 'macro.*AM_MACRO2.*not found' stderr
 
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL -I 4 -I 1 --install
 $AUTOCONF
 ./configure
@@ -98,7 +98,7 @@ cat >dirlist-test/m1.m4 <<EOF
 AC_DEFUN([AM_MACRO1], [echo macro1d >> foo])
 AC_DEFUN([AM_MACRO2], [echo macro2d >> foo])
 EOF
-rm -f foo
+rm -rf foo autom4te*.cache
 $ACLOCAL -I 4 -I 1 --diff=diff >stdout 2>stderr || {
   cat stderr >&2
   cat stdout
diff --git a/tests/ar-lib3.test b/tests/ar-lib3.test
index 6bcf6c2..791322f 100755
--- a/tests/ar-lib3.test
+++ b/tests/ar-lib3.test
@@ -39,6 +39,7 @@ cat >> configure.in << 'END'
 AM_PROG_AR
 END
 
+rm -rf autom4te*.cache
 $ACLOCAL
 $AUTOMAKE --add-missing
 
diff --git a/tests/defs.in b/tests/defs.in
index 6481ef6..457c04e 100644
--- a/tests/defs.in
+++ b/tests/defs.in
@@ -95,8 +95,8 @@ PATH_SEPARATOR='@PATH_SEPARATOR@'
 SHELL='@SHELL@'
 export SHELL
 # User can override various tools used.
+MAKE=${AM_TESTSUITE_MAKE-${MAKE-'make'}}
 test -z "$PERL" && PERL='@PERL@'
-test -z "$MAKE" && MAKE=make
 test -z "$AUTOCONF" && AUTOCONF="@am_AUTOCONF@"
 test -z "$AUTOM4TE" && AUTOM4TE="@am_AUTOM4TE@"
 test -z "$AUTORECONF" && AUTORECONF="@am_AUTORECONF@"
diff --git a/tests/nogzip.test b/tests/lzip.test
similarity index 79%
copy from tests/nogzip.test
copy to tests/lzip.test
index 77adcdc..ab62990 100755
--- a/tests/nogzip.test
+++ b/tests/lzip.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# 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
@@ -14,23 +14,23 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Check support for no-dist-gzip
+# Check support for no-dist-gzip with lzip.
 
-required=bzip2
+required=lzip
 . ./defs || Exit 1
 
 set -e
 
 cat > configure.in << 'END'
-AC_INIT([nogzip], [1.0])
-AM_INIT_AUTOMAKE([no-dist-gzip dist-bzip2])
+AC_INIT([lzip], [1.0])
+AM_INIT_AUTOMAKE([no-dist-gzip dist-lzip])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
 test: distcheck
-       test $(DIST_ARCHIVES) = nogzip-1.0.tar.bz2
+       test $(DIST_ARCHIVES) = lzip-1.0.tar.lz
        test -f $(DIST_ARCHIVES)
 END
 
@@ -39,3 +39,5 @@ $AUTOCONF
 $AUTOMAKE
 ./configure
 $MAKE test
+
+:
diff --git a/tests/lzma.test b/tests/lzma.test
index 11bb93d..7ee59f7 100755
--- a/tests/lzma.test
+++ b/tests/lzma.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2007, 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
@@ -16,11 +16,17 @@
 
 # Check support for no-dist-gzip with lzma
 
-required=lzma
 . ./defs || Exit 1
 
+errmsg='lzma.*deprecated.*dist-xz.*dist-lzip.*instead'
+
 set -e
 
+echo AUTOMAKE_OPTIONS = dist-lzma > Makefile.am
+$ACLOCAL --force
+AUTOMAKE_fails -Wnone -Wobsolete
+grep "^Makefile\\.am:1:.*$errmsg" stderr
+
 cat > configure.in << 'END'
 AC_INIT([lzma], [1.0])
 AM_INIT_AUTOMAKE([no-dist-gzip dist-lzma])
@@ -34,8 +40,16 @@ test: distcheck
        test -f $(DIST_ARCHIVES)
 END
 
-$ACLOCAL
+$ACLOCAL --force
+AUTOMAKE_fails
+grep "^configure\\.in:2:.*$errmsg" stderr
+
+$AUTOMAKE -Wno-obsolete
+
+lzma --version || skip_ "lzma compressor required for the rest of the test"
+
 $AUTOCONF
-$AUTOMAKE
 ./configure
 $MAKE test
+
+:
diff --git a/tests/python11.test b/tests/python11.test
index 0f15f37..6a14368 100755
--- a/tests/python11.test
+++ b/tests/python11.test
@@ -44,9 +44,9 @@ grep 'no suitable Python interpreter found' stderr
 
 sed 's/AM_PATH_PYTHON/AM_PATH_PYTHON(,,:)/' configure.in >configure.int
 mv -f configure.int configure.in
-$ACLOCAL
-$AUTOCONF
-# This one should define PYTHON as : and exit succesfully
+$ACLOCAL --force
+$AUTOCONF --force
+# This one should define PYTHON as ":" and exit successfully.
 ./configure
 
 # Any user setting should be used.
diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test
new file mode 100755
index 0000000..0024b5d
--- /dev/null
+++ b/tests/silent-nested-vars.test
@@ -0,0 +1,149 @@
+#!/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/>.
+
+# Check silent-rules mode, on 'make' implementations that do not
+# support nested variables (Bug#9928, Bug#10237).
+
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo bar
+bar_CFLAGS = $(AM_CFLAGS)
+
+# Check that AM_V and AM_DEFAULT_V work as advertised.
+pkg_verbose = $(address@hidden@)
+pkg_verbose_ = $(address@hidden@)
+pkg_verbose_0 = @echo PKG-GEN $@;
+
+bin_SCRIPTS = oop
+oop:
+       $(pkg_verbose)echo $@ >$@
+
+mostlyclean-local:
+       rm -f oop
+EOF
+
+cat > foo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp foo.c bar.c
+
+cat >mymake <<'EOF'
+#! /bin/sh
+makerules=
+
+case $1 in
+  -f)
+    makefile=$2
+    case $2 in
+      -) makerules=`cat` || exit ;;
+    esac ;;
+  *)
+    for makefile in makefile Makefile; do
+      test -f $makefile && break
+    done ;;
+esac
+
+nested_var_pat='^[^#].*\$([^)]*\$'
+if
+  case $makefile in
+    -) printf '%s\n' "$makerules" | grep "$nested_var_pat";;
+    *) grep "$nested_var_pat" $makefile;;
+  esac
+then
+  echo >&2 "mymake: $makefile contains nested variables"
+  exit 1
+fi
+
+case $makefile in
+  -) printf '%s\n' "$makerules" | $mymake_MAKE "$@";;
+  *) exec $mymake_MAKE "$@";;
+esac
+EOF
+chmod a+x mymake
+mymake_MAKE=${MAKE-make}
+MAKE=./mymake
+export MAKE mymake_MAKE
+
+# As a sanity check, verify that `mymake' rejects Makefiles that
+# use nested variables.
+cat > Makefile <<'END'
+a = $(b$(c))
+all:
+       touch bar
+END
+$MAKE && Exit 99
+mv -f Makefile foo.mk
+$MAKE -f foo.mk && Exit 99
+cat foo.mk | $MAKE -f - && Exit 99
+test -f bar && Exit 99
+sed '/a =/d' foo.mk > Makefile
+$MAKE && test -f bar || Exit 99
+rm -f bar Makefile foo.mk
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \
+  stdout
+$EGREP 'CC|AM_V|GEN' Makefile # For debugging.
+grep '^AM_V_CC =  *\$(am__v_CC_0) *$' Makefile
+grep '^AM_V_GEN =  *\$(am__v_GEN_0) *$' Makefile
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+$EGREP ' (-c|-o)' stdout && Exit 1
+grep 'mv ' stdout && Exit 1
+grep 'echo .*oop' stdout && Exit 1
+grep 'CC .*foo\.' stdout
+grep 'CC .*bar\.' stdout
+grep 'CCLD .*foo' stdout
+grep 'CCLD .*bar' stdout
+grep 'PKG-GEN .*oop' stdout
+$MAKE distclean
+
+./configure --disable-silent-rules > stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \
+  stdout
+$EGREP 'CC|AM_V|GEN' Makefile # For debugging.
+grep '^AM_V_CC =  *\$(am__v_CC_1) *$' Makefile
+grep '^AM_V_GEN =  *\$(am__v_GEN_1) *$' Makefile
+
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o foo' stdout
+grep ' -o bar' stdout
+grep 'echo .*>oop' stdout
+$EGREP '(CC|LD) ' stdout && Exit 1
+
+:
diff --git a/tests/silent6.test b/tests/silent6.test
index acd9cea..0e474af 100755
--- a/tests/silent6.test
+++ b/tests/silent6.test
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2010, 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
@@ -47,14 +47,14 @@ $AUTOCONF
 ./configure --enable-silent-rules
 $MAKE >stdout || { cat stdout; Exit 1; }
 cat stdout
-grep 'GEN foo' stdout
+grep '^ *GEN foo *$' stdout
 grep 'cp ' stdout && Exit 1
 
 $MAKE clean
 $MAKE V=1 >stdout || { cat stdout; Exit 1; }
 cat stdout
 grep 'GEN ' stdout && Exit 1
-grep 'cp ' stdout
+grep 'cp \.*/foo\.in foo' stdout
 
 $MAKE distclean
 
@@ -62,7 +62,13 @@ $MAKE distclean
 $MAKE >stdout || { cat stdout; Exit 1; }
 cat stdout
 grep 'GEN ' stdout && Exit 1
-grep 'cp ' stdout
+grep 'cp \.*/foo\.in foo' stdout
+
+$MAKE clean
+$MAKE V=0 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^ *GEN foo *$' stdout
+grep 'cp ' stdout && Exit 1
 
 $MAKE distclean
 


hooks/post-receive
-- 
GNU Automake



reply via email to

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