Subject: bug#11252: recheck not dependent on all:

From: Stefano Lattarini <[email-masked]>
Date: Wed, 18 Apr 2012 13:27:10 +0200

tags 11252 + patch
close 11252
thanks

I've applied the attached patch, which should solve the problem.  This
fix will appear in the next major automake version (1.12).

Regards,
  Stefano
>From efcba6dd230f20726afcb9722df23f9b95b43eda Mon Sep 17 00:00:00 2001
Message-Id: <efcba6dd2[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Tue, 17 Apr 2012 11:48:01 +0200
Subject: [PATCH] [ng] silent rules: support for them is always active now

At the time of writing, in mainstream Automake, support for silent rules
is optional and activated only if the 'silent-rules' option is specified.

The rationale behind this behaviour is that the silent-rules machinery
originally [1] only worked with make implementations supporting nested
variables expansions, which wasn't a POSIX-specified features, so that
packages wanting to be "extra-portable" couldn't use the silent-rules
machinery at all.

But since Automake-NG only targets GNU make, and since silent rules are
disabled by default even when the 'silent-rules' option is given [2], we
can now have the support for silent rules always enabled.

The 'silent-rules' option will thus become a no-op, but will reaming a
valid option for the time being, for better backward-compatibility.

[NOTES]

  [1] At least, until Paul Eggert's commit 'v1.11-598-g8493499' of
      25-12-2011, "silent-rules: fallback for makes without nested
      vars", motivate by automake bugs #9928 and #10237.

  [2] Unless the developer makes them enabled by default be calling
      "AM_SILENT_RULES([yes])" in configure.ac.

[DETAILS]

For more details, see this thread on the automake-ng mailing list:
<http://lists.gnu.org/archive/html/automake-ng/2012-04/msg00027.html>

* automake.in: Enable silent-rules machinery unconditionally.  Reword
some comments.
* m4/init.m4: Call 'AC_REQUIRE' on 'AM_SILENT_RULES' unconditionally.
* lib/Automake/Options.pm: Recognize 'silent-rules' as a dummy option
* t/silent.sh: Remove now-redundant calls to AM_SILENT_RULES.
* t/silent2.sh: Likewise.
* t/silent3.sh: Likewise.
* t/silent4.sh: Likewise.
* t/silent6.sh: Likewise.
* t/silent8.sh: Likewise.
* t/silent9.sh: Likewise.
* t/silent-lex.sh: Likewise.
* t/silent-many-gcc.sh: Likewise.
* t/silent-many-generic.sh: Likewise.
* t/silent-yacc-headers.sh: Likewise.
* t/silent-yacc.sh: Likewise.
* t/silentcxx-gcc.sh: Likewise.
* t/silentcxx.sh: Likewise.
* t/silentf77.sh: Likewise.
* t/silentf90.sh: Likewise.
* t/help-silent.sh: Likewise.
* t/silent-configsite.sh: Likewise, and other minor adjustments.
* t/silent7.sh: Likewise.  Also, extend to check that silent rules
are disabled by default, and remove obsoleted checks about the
'silent-rules' option being rejected in AUTOMAKE_OPTIONS.
* t/compile_f_c_cxx.sh: Adjust to avoid a spurious failure.
* t/silent-amopts.sh: Remove as obsolete.
* t/list-of-tests.mk: Adjust.
* NG-NEWS: Update.
* doc/automake.texi: Update and simplify accordingly.
* configure.ac (AM_INIT_AUTOMAKE): Remove 'silent-rules' option.

Signed-off-by: Stefano Lattarini <[email-masked]>
---
 NG-NEWS                  |    5 +++
 automake.in              |   51 +++++++++++----------------
 configure.ac             |    2 +-
 doc/automake.texi        |   87 ++++++++++++----------------------------------
 lib/Automake/Options.pm  |    1 +
 m4/init.m4               |    2 +-
 t/compile_f_c_cxx.sh     |    6 ++--
 t/help-silent.sh         |   19 +++++-----
 t/list-of-tests.mk       |    1 -
 t/silent-amopts.sh       |   28 ---------------
 t/silent-configsite.sh   |   12 ++++---
 t/silent-lex.sh          |    1 -
 t/silent-many-gcc.sh     |    1 -
 t/silent-many-generic.sh |    1 -
 t/silent-yacc-headers.sh |    1 -
 t/silent-yacc.sh         |    1 -
 t/silent.sh              |    1 -
 t/silent2.sh             |    1 -
 t/silent3.sh             |    1 -
 t/silent4.sh             |    1 -
 t/silent6.sh             |    1 -
 t/silent7.sh             |   14 +++-----
 t/silent8.sh             |    5 +--
 t/silent9.sh             |    1 -
 t/silentcxx-gcc.sh       |    1 -
 t/silentcxx.sh           |    1 -
 t/silentf77.sh           |    1 -
 t/silentf90.sh           |    1 -
 28 files changed, 76 insertions(+), 172 deletions(-)
 delete mode 100755 t/silent-amopts.sh

diff --git a/NG-NEWS b/NG-NEWS
index 6da558e..152fecc 100644
--- a/NG-NEWS
+++ b/NG-NEWS
@@ -23,6 +23,11 @@ Automatic dependency tracking support
 Silent rules
 ============
 
+* Support for silent rules is now always active in Makefiles generated
+  by Automake-NG; so, although the verbose output is still the default,
+  the user can now always use "./configure --enable-silent-rules" or
+  "make V=0" to enable quieter output in the package he's building.
+
 * The silent-rules support unconditionally assumes that nested variables
   expansion are supported.  Accordingly, the AC_SUBST'd variables '@AM_V@'
   and'@AM_DEFAULT_V@' have been removed, so that instead of using
diff --git a/automake.in b/automake.in
index bb47528..552b5af 100644
--- a/automake.in
+++ b/automake.in
@@ -1101,11 +1101,11 @@ sub backname ($)
 
 ################################################################
 
-# 'silent-rules' mode handling functions.
+# Silent rules handling functions.
 
 # verbose_var (NAME)
 # ------------------
-# The public variable stem used to implement 'silent-rules'.
+# The public variable stem used to implement silent rules.
 sub verbose_var ($)
 {
     my ($name) = @_;
@@ -1114,7 +1114,7 @@ sub verbose_var ($)
 
 # verbose_private_var (NAME)
 # --------------------------
-# The naming policy for the private variables for 'silent-rules'.
+# The naming policy for the private variables for silent rules.
 sub verbose_private_var ($)
 {
     my ($name) = @_;
@@ -1123,20 +1123,23 @@ sub verbose_private_var ($)
 
 # define_verbose_var (NAME, VAL)
 # ------------------------------
-# For 'silent-rules' mode, setup VAR and dispatcher, to expand to VAL if silent.
+# For silent rules, setup VAR and dispatcher, to expand to VAL if silent.
 sub define_verbose_var ($$)
 {
     my ($name, $val) = @_;
     my $var = verbose_var ($name);
     my $pvar = verbose_private_var ($name);
     my $silent_var = $pvar . '_0';
-    if (option 'silent-rules')
+    define_variable ($var,
+                     '$(' . $pvar . '_$(V))',
+                     INTERNAL);
+    define_variable ($pvar . '_',
+                     '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))',
+                     INTERNAL);
+    if (! vardef ($silent_var, TRUE))
       {
-	define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL);
-	define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL);
-	Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val,
-				    '', INTERNAL, VAR_ASIS)
-	  if (! vardef ($silent_var, TRUE));
+        Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE,
+                                    $val, '', INTERNAL, VAR_ASIS);
       }
 }
 
@@ -1148,17 +1151,13 @@ sub define_verbose_var ($$)
 sub verbose_flag ($)
 {
     my ($name) = @_;
-    return '$(' . verbose_var ($name) . ')'
-      if (option 'silent-rules');
-    return '';
+    return '$(' . verbose_var ($name) . ')';
 }
 
 sub verbose_nodep_flag ($)
 {
     my ($name) = @_;
-    return '$(' . verbose_var ($name) . subst ('am__nodep') . ')'
-      if (option 'silent-rules');
-    return '';
+    return '$(' . verbose_var ($name) . subst ('am__nodep') . ')';
 }
 
 # silent_flag
@@ -1171,20 +1170,17 @@ sub silent_flag ()
 
 # define_verbose_tagvar (NAME)
 # ----------------------------
-# Engage the needed 'silent-rules' machinery for tag NAME.
+# Engage the needed silent rules machinery for tag NAME.
 sub define_verbose_tagvar ($)
 {
     my ($name) = @_;
-    if (option 'silent-rules')
-      {
-	define_verbose_var ($name, '@echo "  '. $name . ' ' x (8 - length ($name)) . '" $@;');
-	define_verbose_var ('at', '@');
-      }
+    define_verbose_var ($name, '@echo "  '. $name . ' ' x (8 - length ($name)) . '" $@;');
+    define_verbose_var ('at', '@');
 }
 
 # define_verbose_texinfo
 # ----------------------
-# Engage the needed 'silent-rules' machinery for assorted texinfo commands.
+# Engage the needed silent rules machinery for assorted texinfo commands.
 sub define_verbose_texinfo ()
 {
   my @tagvars = ('DVIPS', 'MAKEINFO', 'INFOHTML', 'TEXI2DVI', 'TEXI2PDF');
@@ -1198,7 +1194,7 @@ sub define_verbose_texinfo ()
 
 # define_verbose_libtool
 # ----------------------
-# Engage the needed 'silent-rules' machinery for 'libtool --silent'.
+# Engage the needed silent rules machinery for 'libtool --silent'.
 sub define_verbose_libtool ()
 {
     define_verbose_var ('lt', '--silent');
@@ -1521,7 +1517,7 @@ sub handle_languages
 	define_linker_variable ($languages{'c'});
       }
 
-    # Always provide the user with 'AM_V_GEN' for 'silent-rules' mode.
+    # Always provide the user with 'AM_V_GEN' for silent rules.
     define_verbose_tagvar ('GEN');
 }
 
@@ -5118,7 +5114,6 @@ sub scan_autoconf_traces ($)
 		AM_MAINTAINER_MODE => 0,
 		AM_PROG_AR => 0,
 		AM_PROG_CC_C_O => 0,
-		AM_SILENT_RULES => 0,
 		_AM_SUBST_NOTMAKE => 1,
 		_AM_COND_IF => 1,
 		_AM_COND_ELSE => 1,
@@ -5310,10 +5305,6 @@ sub scan_autoconf_traces ($)
 	{
 	  $seen_cc_c_o = $where;
 	}
-      elsif ($macro eq 'AM_SILENT_RULES')
-        {
-	  set_global_option ('silent-rules', $where);
-	}
       elsif ($macro eq '_AM_COND_IF')
         {
 	  cond_stack_if ('', $args[1], $where);
diff --git a/configure.ac b/configure.ac
index 8d66a75..a00d6ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -40,7 +40,7 @@ dnl We call AC_PROG_CC in an unusual way, and only for use in our
 dnl testsuite, so also use 'no-dependencies' and 'no-define' among
 dnl the automake options to avoid bloating and potential problems.
 AM_INIT_AUTOMAKE([dist-xz filename-length-max=99 color-tests
-		  parallel-tests silent-rules no-define no-dependencies])
+		  parallel-tests no-define no-dependencies])
 
 # The API version is the base version.  We must guarantee
 # compatibility for all releases with the same API version.
diff --git a/doc/automake.texi b/doc/automake.texi
index b497233..8e5b0d2 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -359,9 +359,9 @@ Conditionals
 
 Silencing Make
 
-* Make verbosity::               Make is verbose by default
-* Tricks For Silencing Make::    Standard and generic ways to silence make
-* Automake silent-rules Option:: How Automake can help in silencing make
+* Make verbosity::              Make is verbose by default
+* Tricks For Silencing Make::   Standard and generic ways to silence make
+* Automake Silent Rules::       How Automake can help in silencing make
 
 When Automake Isn't Enough
 
@@ -4069,7 +4069,8 @@ compiler is found.
 
 @item AM_SILENT_RULES
 @acindex AM_SILENT_RULES
-Enable the machinery for less verbose build output (@pxref{Options}).
+Control the machinery for less verbose build output
+(@pxref{Automake Silent Rules}).
 
 @item AM_WITH_DMALLOC
 @acindex AM_WITH_DMALLOC
@@ -5481,9 +5482,8 @@ The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
 Variables Ordering}.  It allows users to run @samp{make
 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
-@command{libtool} can also be influenced with the Automake
-@option{silent-rules} option (@pxref{Options}).
-
+@command{libtool} can also be influenced by the Automake support
+for silent rules (@pxref{Automake Silent Rules}).
 
 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
@@ -10167,23 +10167,6 @@ non-alpha releases.  The second form is
 @samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
 letter; it should be omitted for non-alpha releases.
 
-@item @option{silent-rules}
-@cindex Option, @option{silent-rules}
-@opindex silent-rules
-Enable less verbose build rules.  This can be used to let build rules
-output status lines of the form:
-@example
-GEN @var{output-file}
- CC @var{object-file}
-@end example
-@noindent
-instead of printing the command that will be executed to update
-@var{output-file} or to compile @var{object-file}.  It can also
-silence @command{libtool} output.
-
-For more information about how to use, enable, or disable silent
-rules, @pxref{Automake silent-rules Option}.
-
 @item @option{std-options}
 @cindex Options, @option{std-options}
 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
@@ -10665,9 +10648,9 @@ Libtool Sources}).
 @cindex Silent @command{make} rules
 
 @menu
-* Make verbosity::               Make is verbose by default
-* Tricks For Silencing Make::    Standard and generic ways to silence make
-* Automake silent-rules Option:: How Automake can help in silencing make
+* Make verbosity::              Make is verbose by default
+* Tricks For Silencing Make::   Standard and generic ways to silence make
+* Automake Silent Rules::       How Automake can help in silencing make
 @end menu
 
 @node Make verbosity
@@ -10702,8 +10685,8 @@ the easy detection of potentially important warning messages.
 
 Here we describe some common idioms/tricks to obtain a quieter make
 output, with their relative advantages and drawbacks.  In the next
-section (@ref{Automake silent-rules Option}) we'll see how Automake
-can help in this respect.
+section (@ref{Automake Silent Rules}) we'll see how Automake can help
+in this respect, providing more elaborate and flexible idioms.
 
 @itemize @bullet
 
@@ -10755,20 +10738,19 @@ automatically activated if the @option{-s} flag is used.
 
 @end itemize
 
-@node Automake silent-rules Option
+@node Automake Silent Rules
 @section How Automake can help in silencing make
 
 The tricks and idioms for silencing @command{make} described in the
 previous section can be useful from time to time, but we've seen that
 they all have their serious drawbacks and limitations.  That's why
 automake provides support for a more advanced and flexible way of
-obtaining quieter output from @command{make}: the @option{silent-rules}
-mode.
+obtaining quieter output from @command{make} (for most rules at least).
 
 @c TODO: Maybe describe in brief the precedent set by the build system
 @c of the Linux Kernel, from which Automake took inspiration ... Links?
 
-To give the gist of what @option{silent-rules} can do, here is a simple
+To give the gist of what Automake can do in this respect, here is a simple
 comparison between a typical @command{make} output (where silent rules
 are disabled) and one with silent rules enabled:
 
@@ -10817,7 +10799,7 @@ func.c:4:3: warning: ‘i’ used uninitialized in this function
   CCLD   foo
 @end example
 
-@cindex silent-rules and libtool
+@cindex silent rules and libtool
 Also, in projects using @command{libtool}, the use of silent rules can
 automatically enable the @command{libtool}'s @option{--silent} option:
 
@@ -10843,26 +10825,9 @@ libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
   CCLD   libx.la
 @end example
 
-Let's now see how the @option{silent-rules} mode interfaces with the
-package developer and the package user.
-
-To enable the use of @option{silent-rules} in his package, a developer
-needs to do either of the following:
-
-@itemize @bullet
-@item
-Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
-@item
-Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
-file.
-@end itemize
-
-It is not possible to instead specify @option{silent-rules} in a
-@file{Makefile.am} file.
-
-If the developer has done either of the above, then the user of the
-package may influence the verbosity at @command{configure} run time as
-well as at @command{make} run time:
+For Automake-generated @file{Makefile}s, the user may influence the
+verbosity at @command{configure} run time as well as at @command{make}
+run time:
 
 @itemize @bullet
 @item
@@ -10878,17 +10843,16 @@ time may be overridden: @code{make V=1} will produce verbose output,
 @code{make V=0} less verbose output.
 @end itemize
 
-@cindex default verbosity for silent-rules
+@cindex default verbosity for silent rules
 Note that silent rules are @emph{disabled} by default; the user must
 enable them explicitly at either @command{configure} run time or at
 @command{make} run time.  We think that this is a good policy, since
 it provides the casual user with enough information to prepare a good
 bug report in case anything breaks.
 
-Still, notwithstanding the rationales above, a developer who wants to
-make silent rules enabled by default in his own package can do so by
-adding a @samp{yes} argument to the @code{AM_SILENT_RULES} call in
-@file{configure.ac}.  We advise against this approach, though.
+Still, notwithstanding the rationales above, a developer who really
+wants to make silent rules enabled by default in his own package can
+do so by calling @code{AM_SILENT_RULES([yes])} in @file{configure.ac}.
 
 @c Keep in sync with silent-configsite.sh
 Users who prefer to have silent rules enabled by default can edit their
@@ -10896,11 +10860,6 @@ Users who prefer to have silent rules enabled by default can edit their
 default to @samp{yes}.  This should still allow disabling silent rules
 at @command{configure} time and at @command{make} time.
 
-@c FIXME: there's really a need to specify this explicitly?
-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.
-
 @vindex @code{AM_V_GEN}
 @vindex @code{AM_V_at}
 @vindex @code{AM_DEFAULT_VERBOSITY}
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
index 2f977bd..702d428 100644
--- a/lib/Automake/Options.pm
+++ b/lib/Automake/Options.pm
@@ -287,6 +287,7 @@ sub _is_valid_easy_option ($)
     no-texinfo.tex
     nostdinc
     readme-alpha
+    silent-rules
     std-options
     subdir-objects
   );
diff --git a/m4/init.m4 b/m4/init.m4
index ef0d3da..dfad84a 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -100,7 +100,7 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
 		  [define([AC_PROG_OBJC],
 			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+AC_REQUIRE([AM_SILENT_RULES])dnl
 dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
 dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
diff --git a/t/compile_f_c_cxx.sh b/t/compile_f_c_cxx.sh
index 99893d8..2f093ba 100755
--- a/t/compile_f_c_cxx.sh
+++ b/t/compile_f_c_cxx.sh
@@ -39,8 +39,8 @@ $ACLOCAL
 $AUTOMAKE
 
 # Look for the macros at the beginning of rules.
-$FGREP "$tab\$(COMPILE)"    Makefile.in
-$FGREP "$tab\$(CXXCOMPILE)" Makefile.in
-$FGREP "$tab\$(F77COMPILE)" Makefile.in
+$FGREP "$tab\$(AM_V_CC)\$(COMPILE)"     Makefile.in
+$FGREP "$tab\$(AM_V_CXX)\$(CXXCOMPILE)" Makefile.in
+$FGREP "$tab\$(AM_V_F77)\$(F77COMPILE)" Makefile.in
 
 :
diff --git a/t/help-silent.sh b/t/help-silent.sh
index d5fc342..aaa6b6a 100755
--- a/t/help-silent.sh
+++ b/t/help-silent.sh
@@ -14,25 +14,22 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Make sure that our macro 'AM_SILENT_RULES' adds proper text to
-# the configure help screen.
+# Make sure configure options relative to automake silent rules are
+# added to the configure help screen.
 
 . ./defs || Exit 1
 
-cat > configure.ac <<END
-AC_INIT([$me], [1.0])
-AM_SILENT_RULES
-END
-
+: > Makefile.am
 $ACLOCAL
 
-mv -f configure.ac configure.tmpl
+cp configure.ac configure.tmpl
 
 q="[\`'\"]"
 
-for args in '' '([])' '([yes])' '([no])'; do
-  sed "s/AM_SILENT_RULES.*/&$args/" configure.tmpl >configure.ac
-  cat configure.ac
+for args in '' 'yes' 'no'; do
+  cp -f configure.tmpl configure.ac
+  test x"$args" = x || echo "AM_SILENT_RULES([$args])/" >> configure.ac
+  cat configure.ac # For debugging.
   $AUTOCONF --force
   grep_configure_help --enable-silent-rules \
                       " less verbose build.*\\(undo.*${q}make V=1${q}"
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 30538e1..9a64d0e 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -956,7 +956,6 @@ t/silentcxx.sh \
 t/silentcxx-gcc.sh \
 t/silentf77.sh \
 t/silentf90.sh \
-t/silent-amopts.sh \
 t/silent-many-gcc.sh \
 t/silent-many-generic.sh \
 t/silent-configsite.sh \
diff --git a/t/silent-amopts.sh b/t/silent-amopts.sh
deleted file mode 100755
index f71ad13..0000000
--- a/t/silent-amopts.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2012 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 that automake complaints if the 'silent-rules' option is
-# used in AUTOMAKE_OPTIONS.
-
-. ./defs || Exit 1
-
-echo AUTOMAKE_OPTIONS = silent-rules > Makefile.am
-
-$ACLOCAL
-AUTOMAKE_fails
-grep "^Makefile\.am:1:.*'silent-rules'.*AM_INIT_AUTOMAKE" stderr
-
-:
diff --git a/t/silent-configsite.sh b/t/silent-configsite.sh
index 813753b..d8c2b33 100755
--- a/t/silent-configsite.sh
+++ b/t/silent-configsite.sh
@@ -21,7 +21,7 @@
 . ./defs || Exit 1
 
 cat >> configure.ac <<'EOF'
-AM_SILENT_RULES
+# This line will be edited later to force silent-rules default.
 AC_OUTPUT
 EOF
 
@@ -51,8 +51,9 @@ $MAKE distclean
 
 : 'Disable by default in configure.ac, enable by default in config.site'
 
-sed 's/^AM_SILENT_RULES/&([no])/' configure.ac > configure.tmp
-mv -f configure.tmp configure.ac
+sed 's/.*silent-rules default.*/AM_SILENT_RULES([no])/' configure.ac > t
+diff t configure.ac && fatal_ "editing configure.ac"
+mv -f t configure.ac
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
@@ -67,8 +68,9 @@ $MAKE distclean
 
 : 'Enable by default in configure.ac, disable by default in config.site'
 
-sed 's/^AM_SILENT_RULES/&([yes])/' configure.ac > configure.tmp
-mv -f configure.tmp configure.ac
+sed 's/.*AM_SILENT_RULES.*/AM_SILENT_RULES([yes])/' configure.ac > t
+diff t configure.ac && fatal_ "editing configure.ac"
+mv -f t configure.ac
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
diff --git a/t/silent-lex.sh b/t/silent-lex.sh
index 2838d6e..0e7bca5 100755
--- a/t/silent-lex.sh
+++ b/t/silent-lex.sh
@@ -22,7 +22,6 @@ required=lex
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AM_PROG_CC_C_O
 AC_PROG_LEX
 AC_CONFIG_FILES([sub/Makefile])
diff --git a/t/silent-many-gcc.sh b/t/silent-many-gcc.sh
index 8b457ca..8ad0720 100755
--- a/t/silent-many-gcc.sh
+++ b/t/silent-many-gcc.sh
@@ -95,7 +95,6 @@ do_and_check_verbose_build ()
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AM_PROG_CC_C_O
 AC_PROG_CXX
 AC_PROG_F77
diff --git a/t/silent-many-generic.sh b/t/silent-many-generic.sh
index 3949009..cd37672 100755
--- a/t/silent-many-generic.sh
+++ b/t/silent-many-generic.sh
@@ -96,7 +96,6 @@ do_and_check_verbose_build ()
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AM_PROG_CC_C_O
 AC_PROG_F77
 AC_PROG_FC
diff --git a/t/silent-yacc-headers.sh b/t/silent-yacc-headers.sh
index 55ba247..5f12c18 100755
--- a/t/silent-yacc-headers.sh
+++ b/t/silent-yacc-headers.sh
@@ -23,7 +23,6 @@ required=yacc
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_PROG_YACC
 AC_PROG_CC
 AC_OUTPUT
diff --git a/t/silent-yacc.sh b/t/silent-yacc.sh
index 35415bf..5cb3abc 100755
--- a/t/silent-yacc.sh
+++ b/t/silent-yacc.sh
@@ -23,7 +23,6 @@ required=yacc
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AM_PROG_CC_C_O
 AC_PROG_YACC
 AC_CONFIG_FILES([sub/Makefile])
diff --git a/t/silent.sh b/t/silent.sh
index f914c44..3cdbaff 100755
--- a/t/silent.sh
+++ b/t/silent.sh
@@ -24,7 +24,6 @@ required=cc
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_CC_C_O
diff --git a/t/silent2.sh b/t/silent2.sh
index 6565a27..6270104 100755
--- a/t/silent2.sh
+++ b/t/silent2.sh
@@ -25,7 +25,6 @@ required=gcc
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_CC_C_O
diff --git a/t/silent3.sh b/t/silent3.sh
index 564a490..cb3c629 100755
--- a/t/silent3.sh
+++ b/t/silent3.sh
@@ -24,7 +24,6 @@ required='cc libtoolize'
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_AR
diff --git a/t/silent4.sh b/t/silent4.sh
index 44b7eb3..a44c718 100755
--- a/t/silent4.sh
+++ b/t/silent4.sh
@@ -25,7 +25,6 @@ required="libtoolize gcc"
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_AR
diff --git a/t/silent6.sh b/t/silent6.sh
index 8440643..a493e3e 100755
--- a/t/silent6.sh
+++ b/t/silent6.sh
@@ -19,7 +19,6 @@
 . ./defs || Exit 1
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_OUTPUT
 EOF
 
diff --git a/t/silent7.sh b/t/silent7.sh
index 02ef287..716eada 100755
--- a/t/silent7.sh
+++ b/t/silent7.sh
@@ -15,13 +15,11 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Check user extensibility of silent-rules mode.
+# Aslo check that silent rules are disabled by default.
 
 . ./defs || Exit 1
 
-cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
-AC_OUTPUT
-EOF
+echo AC_OUTPUT >> configure.ac
 
 cat > Makefile.am <<'EOF'
 all-local: foo
@@ -41,7 +39,9 @@ $ACLOCAL
 $AUTOMAKE --add-missing
 $AUTOCONF
 
-./configure --disable-silent-rules
+# Silent rules are disabled by default, since we haven't called
+# "AM_SILENT_RULES([yes])" explicitly.
+./configure
 $MAKE >stdout || { cat stdout; Exit 1; }
 cat stdout
 grep 'GEN ' stdout && Exit 1
@@ -85,8 +85,4 @@ grep 'GEN ' stdout && Exit 1
 grep 'cp ' stdout
 grep 'echo ' stdout
 
-# Ensure that setting 'silent-rules' in a Makefile.am produces an error.
-echo 'AUTOMAKE_OPTIONS = silent-rules' >> Makefile.am
-AUTOMAKE_fails --force
-
 :
diff --git a/t/silent8.sh b/t/silent8.sh
index b2059a8..1254f9f 100755
--- a/t/silent8.sh
+++ b/t/silent8.sh
@@ -19,10 +19,7 @@
 required='makeinfo-html tex texi2dvi-o dvips'
 . ./defs || Exit 1
 
-cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
-AC_OUTPUT
-EOF
+echo AC_OUTPUT >> configure.ac
 
 cat > Makefile.am <<'EOF'
 info_TEXINFOS = foo.texi
diff --git a/t/silent9.sh b/t/silent9.sh
index 70195a1..9b311c6 100755
--- a/t/silent9.sh
+++ b/t/silent9.sh
@@ -24,7 +24,6 @@ required='cc libtoolize'
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_CONFIG_FILES([sub/Makefile])
 AC_PROG_CC
 AM_PROG_CC_C_O
diff --git a/t/silentcxx-gcc.sh b/t/silentcxx-gcc.sh
index d99f1e9..fff3f91 100755
--- a/t/silentcxx-gcc.sh
+++ b/t/silentcxx-gcc.sh
@@ -24,7 +24,6 @@ required=g++
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_PROG_CXX
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
diff --git a/t/silentcxx.sh b/t/silentcxx.sh
index a41cc2d..cc111d3 100755
--- a/t/silentcxx.sh
+++ b/t/silentcxx.sh
@@ -25,7 +25,6 @@ required=c++
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_PROG_CXX
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
diff --git a/t/silentf77.sh b/t/silentf77.sh
index ce6f6a0..87fbc23 100755
--- a/t/silentf77.sh
+++ b/t/silentf77.sh
@@ -23,7 +23,6 @@ required=fortran77
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_PROG_F77
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
diff --git a/t/silentf90.sh b/t/silentf90.sh
index 8bb06b2..65a35ed 100755
--- a/t/silentf90.sh
+++ b/t/silentf90.sh
@@ -23,7 +23,6 @@ required=fortran
 mkdir sub
 
 cat >>configure.ac <<'EOF'
-AM_SILENT_RULES
 AC_PROG_FC
 AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
-- 
1.7.9.5