automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.13.2


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.13.2-1089-g324e4fb
Date: Sun, 26 May 2013 22:00:32 +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=324e4fb8ec7e08c521483f8716f45996fc2db14b

The branch, ng/master has been updated
       via  324e4fb8ec7e08c521483f8716f45996fc2db14b (commit)
       via  1882ae6462376f2eb6ed5555c83d0f736edd8c1a (commit)
       via  fef0dd0d34159dea143000d2a12cd918bde21750 (commit)
       via  607550fef8a0e5f3be2bf4ab8d37cae808098541 (commit)
       via  084351cc61ea15f78b38cd03f381a02386012b9d (commit)
       via  6b166260248f33426e6cd2e1f6f354313d35b235 (commit)
       via  507d4577439e6c893a7a868068e311fdecbb12d5 (commit)
       via  dd1a567f0c6bb0e3e60cbdf778c17e55844de603 (commit)
       via  2b9a79a7c2edefebb4aea3dc08acadb683c9487d (commit)
       via  974d1780e9e90454eca9ffaf4ab91045aa73d2bf (commit)
       via  3f152503c5f3fc2a1368edfcb19d69a6f08b20bf (commit)
       via  5ed59024adfb8d0d4c346b6c229f68f824ceb438 (commit)
       via  b95a04446a7da4a6fc1f02ed79fc389fb1a32708 (commit)
       via  4a4f39cf7b87a9384a1b274263a66577f3387131 (commit)
       via  3f19ee5f2e2b7cef7f77893a280e2261bc5f711f (commit)
       via  d6efe326c1e3a09de1c9c997c6a0b6353ceb1ce0 (commit)
       via  e5b40a3ee2c6fbc0cec34b0a96ac2dc74401205f (commit)
       via  6f109602762dbb9648de169de01e6aaddd78a9ec (commit)
       via  2ea48f45055ca574b8b63eff83c42e3f06d5b08c (commit)
       via  d33783f5db602d664925dbef62d91452df80a889 (commit)
       via  d81424aa9a976e0854af3a3e4aad00a603cd02b4 (commit)
       via  73a09981c3ed6932a319768bfb7a5fffc80457b3 (commit)
       via  bf81b6d1e7e9a9cc0ee310f0b232f20e9eb7c392 (commit)
       via  fc1aac7adde71f81a6ce03cd41d13ed75be146fa (commit)
       via  372d0c09051d0de402a0e1add4e6734c1a578919 (commit)
       via  f61ae294ba3b1a506305f29be3ca4fcbdf538e3f (commit)
       via  057ff0fed7cfd7fa50fb0af99b112d90463be9d3 (commit)
       via  b9c579cb7c1c3681a6e781d340b6a8dced1002ce (commit)
       via  74c1336d0ccc7549e87839ae1f1036751d3f667a (commit)
       via  b2b6269fca6f7bb7adac2d09c02adf0c6b701d48 (commit)
       via  e90126cf20ab1bd848631fca5d4bc32433ca52e4 (commit)
       via  9877109c1f00e20f76a69ac656fc02a439ae318a (commit)
       via  f6b9a22e7e7de330961cecdb55dbfcf15bb7e3c9 (commit)
      from  313db7c6a9ad24f059326cc43223056ca3814f23 (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 -----------------------------------------------------------------
commit 324e4fb8ec7e08c521483f8716f45996fc2db14b
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 22:45:22 2013 +0200

    tests: fix few spurious failures
    
    * t/subobj-c.sh, t/subobj-libtool.sh,  t/test-extensions-funny-chars.sh:
    In these tests.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 1882ae6462376f2eb6ed5555c83d0f736edd8c1a
Merge: fef0dd0 507d457
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 22:29:25 2013 +0200

    Merge branch 'master' into ng/master
    
    * master:
      tests: remove an "unworthy" FIXME comment
      tests: remove one obsolete workaround for long-lifted limitations
      tests: couple of minor tweaks in demo tests in C++ and Libtool
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit fef0dd0d34159dea143000d2a12cd918bde21750
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 22:12:35 2013 +0200

    lint: remove dependency on obsolete check 'maintainer-check-list-of-tests'
    
    * maintainer/syntax-checks.mk: Here.  Probably the result of an imperfect
    merge.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 607550fef8a0e5f3be2bf4ab8d37cae808098541
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 21:52:32 2013 +0200

    tests: use 'run_make' instead of $MAKE output redirection done by hand
    
    Change suggested by 'sc_tests_no_run_make_redirect'.
    
    * t/am-xargs-map.sh: Avoid redirecting stdout/stderr from make.
    * t/dist-formats.tap: Likewise.
    * t/dist-srcdir2.sh: Likewise.
    * t/no-spurious-install-recursive.sh: Likewise.
    * t/nostdinc.sh: Likewise.
    * t/parallel-tests-dynamic.sh: Likewise.
    * t/parallel-tests-many.sh: Likewise.
    * t/parallel-tests-unreadable.sh: Likewise.
    * t/spell.sh: Likewise.
    * t/spell2.sh: Likewise.
    * t/spy-pattern-rules.sh: Likewise.
    * t/spy-var-append.sh: Likewise.
    * t/stdinc-no-repeated.sh: Likewise.
    * t/test-extensions-funny-chars.sh: Likewise.
    * t/test-extensions-invalid.sh: Likewise.
    * t/var-undef-append.sh: Likewise.
    * t/vartypos-deps.sh: Likewise.
    * t/vartypos-whitelist.sh: Likewise.
    * t/vartypos.sh: Likewise.
    * t/parallel-tests-concatenated-suffix.sh: Likewise, and in the process,
    drop now-obsolete workaround for a Solaris /bin/sh bug.
    * t/test-driver-custom-multitest-recheck2.sh: Avoid redirection of
    'run_make' output, use the '-O' option instead.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 084351cc61ea15f78b38cd03f381a02386012b9d
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 21:30:47 2013 +0200

    tests: fix unresolved merge conflict
    
    * t/parallel-tests-recheck-pr11791.sh: Here.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 6b166260248f33426e6cd2e1f6f354313d35b235
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 21:29:15 2013 +0200

    lint: remove reference to obsolete variables (no longer actually defined)
    
    * maintainer/syntax-checks.mk (syntax_check_rules): Drop reference to
    '$(sc_obsolete_requirements_rules)' and '$(sc_variable_typos_rules)'.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit dd1a567f0c6bb0e3e60cbdf778c17e55844de603
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 21:01:18 2013 +0200

    lint: cosmetics: use #-comments, not ##-comments, consistently
    
    This is a follow-up to mainline Automake commit v1.13.2-30-g372d0c0.
    Here, we convert the ##-style comments still present in Automake-NG.
    
    * maintainer/syntax-checks.mk: Adjust throughout.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 2b9a79a7c2edefebb4aea3dc08acadb683c9487d
Merge: 313db7c 4a4f39c
Author: Stefano Lattarini <address@hidden>
Date:   Sun May 26 20:56:32 2013 +0200

    Merge branch 'master' into ng/master
    
    * master:
      NEWS: document deprecation of 'shar' and 'compress' dist formats
      m4: rename minuso.m4 -> prog-cc-c-o.m4
      tests: adjust or remove some obsolete comments
      tests: remove some useless 'unset' of variables
      tests: avoid a couple of extra sleep with GNU make
      NEWS: document testsuite work for 1.13.3
      lint: remove a couple of obsolete syntax checks
      lint: cosmetics: use #-comments, not ##-comments
      lint: cosmetics: some reordering
      lint: recipes of syntax check require GNU grep; ensure it is used
      lint: better name for a syntax check
      tests: rename $am_make_rc_got -> $am_make_rc
      tests: some tests make no sense if "$CC -c -o" doesn't work
      AM_PROG_CC_C_O: don't rely on AC_PROG_CC_C_O, re-implement similar logic
      compile: rewrite AC_PROG_CC with AM_PROG_CC_C_O contents
      tests: ensure $required is not set too late
    
    Signed-off-by: Stefano Lattarini <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                       |   56 ++++++--
 gen-testsuite-part                         |    2 +-
 m4/Makefile.inc                            |    2 +-
 m4/ar-lib.m4                               |    5 +-
 m4/init.m4                                 |   12 +-
 m4/minuso.m4                               |   32 -----
 m4/prog-cc-c-o.m4                          |   47 ++++++
 maintainer/syntax-checks.mk                |  209 +++++++++++++---------------
 t/add-missing.tap                          |    6 +-
 t/am-prog-cc-c-o.sh                        |   65 +++++++---
 t/am-xargs-map.sh                          |    3 +-
 t/ax/am-test-lib.sh                        |   34 +++--
 t/ax/tap-summary-aux.sh                    |    4 +-
 t/ax/test-init.sh                          |    4 +
 t/ax/testsuite-summary-checks.sh           |    4 +-
 t/ccnoco-deps.sh                           |   82 +++++++++++
 t/{ccnoco.sh => ccnoco-lib.sh}             |   30 +++--
 t/{ccnoco.sh => ccnoco-lt.sh}              |   41 ++++--
 t/ccnoco.sh                                |   15 ++-
 t/cxx-lt-demo.sh                           |    1 -
 t/deleted-am.sh                            |    1 -
 t/discover.sh                              |    2 +-
 t/dist-formats.tap                         |    6 +-
 t/dist-srcdir2.sh                          |    3 +-
 t/distcheck-configure-flags.sh             |    3 +-
 t/link_cond.sh                             |    4 +-
 t/location.sh                              |    2 -
 t/no-spurious-install-recursive.sh         |    3 +-
 t/nostdinc.sh                              |    6 +-
 t/parallel-tests-concatenated-suffix.sh    |    8 +-
 t/parallel-tests-dynamic.sh                |   28 ++---
 t/parallel-tests-exit-statuses.sh          |    8 +-
 t/parallel-tests-extra-programs.sh         |    4 +-
 t/parallel-tests-fd-redirect-exeext.sh     |    2 +-
 t/parallel-tests-fd-redirect.sh            |    2 +-
 t/parallel-tests-fork-bomb.sh              |    2 +-
 t/parallel-tests-many.sh                   |   34 ++---
 t/parallel-tests-reset-term.sh             |    2 +-
 t/parallel-tests-unreadable.sh             |    3 +-
 t/silent-many-languages.sh                 |    6 -
 t/spell.sh                                 |    3 +-
 t/spell2.sh                                |    3 +-
 t/spy-pattern-rules.sh                     |    5 +-
 t/spy-var-append.sh                        |    2 +-
 t/stdinc-no-repeated.sh                    |    6 +-
 t/subobj-c.sh                              |    2 +-
 t/subobj-libtool.sh                        |    2 +-
 t/subobj10.sh                              |    2 +-
 t/subpkg.sh                                |    2 +-
 t/test-driver-acsubst.sh                   |    2 +-
 t/test-driver-cond.sh                      |    2 +-
 t/test-driver-custom-multitest-recheck2.sh |    3 +-
 t/test-extensions-funny-chars.sh           |   20 +--
 t/test-extensions-invalid.sh               |    3 +-
 t/var-undef-append.sh                      |    2 +-
 t/vartypos-deps.sh                         |    6 +-
 t/vartypos-whitelist.sh                    |    8 +-
 t/vartypos.sh                              |    6 +-
 58 files changed, 497 insertions(+), 365 deletions(-)
 delete mode 100644 m4/minuso.m4
 create mode 100644 m4/prog-cc-c-o.m4
 create mode 100755 t/ccnoco-deps.sh
 copy t/{ccnoco.sh => ccnoco-lib.sh} (70%)
 mode change 100644 => 100755
 copy t/{ccnoco.sh => ccnoco-lt.sh} (53%)
 mode change 100644 => 100755

diff --git a/NEWS b/NEWS
index 4a4fd88..6f88845 100644
--- a/NEWS
+++ b/NEWS
@@ -165,16 +165,25 @@ New in 1.14:
 
   - Automake will automatically enhance the AC_PROG_CC autoconf macro
     to make it check, at configure time, that the C compiler supports
-    the combined use of both the "-c -o" options.  This "rewrite" of
-    AC_PROG_CC is only meant to be temporary, since future Autoconf
-    versions should provide all the features Automake needs.
+    the combined use of both the "-c -o" options.  The result of this
+    check is saved in the cache variable 'am_cv_prog_cc_c_o', and said
+    result can be overridden by pre-defining that variable.
 
-  - The AM_PROG_CC_C_O is no longer useful, and its use is a no-op
-    now.  Future Automake versions might start warning that this
-    macro is obsolete.  For better backward-compatibility, this macro
-    still sets a proper 'ac_cv_prog_cc_*_c_o' cache variable, and
-    define the 'NO_MINUS_C_MINUS_O' C preprocessor symbol, but you
-    should really stop relying on that.
+  - The AM_PROG_CC_C_O can still be called, but that should no longer
+    be necessary. This macro is now just a thin wrapper around the
+    Automake-enhanced AC_PROG_CC.  This means, among the other things,
+    that its behaviour is changed in three ways:
+
+      1. It no longer invokes the Autoconf-provided AC_PROG_CC_C_O
+         macros behind the scenes.
+
+      2. It caches the check result in the 'am_cv_prog_cc_c_o'variable,
+         and not in a 'ac_cv_prog_cc_*_c_o' variable whose exact name
+         in only dynamically computed at configure runtime (sic!) from
+         the content of the '$CC' variable.
+
+      3. It no longer automatically AC_DEFINE the C preprocessor
+         symbol 'NO_MINUS_C_MINUS_O'.
 
 * Texinfo support:
 
@@ -217,6 +226,15 @@ New in 1.14:
         bin_PROGRAMS += %reldir%/foo
         %canon_reldir%_foo_SOURCES = %reldir%/bar.c
 
+* Deprecated distribution formats:
+
+  - The 'shar' and 'compress' distribution formats are deprecated, and
+    scheduled for removal in Automake 2.0.  Accordingly, the use of the
+    'dist-shar' and 'dist-tarZ' will cause warnings at automake runtime
+    (in the 'obsolete' category), and the recipes for the Automake-generated
+    targets 'dist-shar' and 'dist-tarZ' will unconditionally display
+    (non-fatal) warnings at make runtime.
+    
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 New in 1.13.3:
@@ -226,6 +244,26 @@ New in 1.13.3:
   - Byte-compilation of Emacs lisp files could fail spuriously on Solaris,
     when /bin/ksh or /usr/xpg4/bin/sh were used as shell.
 
+* Testsuite work:
+
+  - The test cases no longer have the executable bit set.  This should
+    make it clear that they are not meant to be run directly; as
+    explained in t/README, the can only be run through the custom
+    'runtest' script, or by a "make check" invocation.
+
+  - The testsuite has seen the introduction of a new helper function
+    'run_make', and several related changes.  These serve a two-fold
+    purpose:
+
+      1. Removing brittleness due to the use of "make -e" in test cases.
+
+      2. Seamlessly allowing the use of parallel make ("make -j...") in
+         the test cases, even where redirection of make output is involved
+         (see automake bug#11413 for a description of the subtle issues in
+         this area).
+
+   - Some other minor, miscellaneous changes and fixlets.
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 New in 1.13.2:
diff --git a/gen-testsuite-part b/gen-testsuite-part
index b758d88..c7282cb 100755
--- a/gen-testsuite-part
+++ b/gen-testsuite-part
@@ -342,7 +342,7 @@ my %depmodes =
   (
     auto         => ["cc"],
     disabled     => ["cc"],
-    makedepend   => ["cc", "makedepend"],
+    makedepend   => ["cc", "makedepend", "-c-o"],
     dashmstdout  => ["gcc"],
     cpp          => ["gcc"],
 # This was for older (pre-3.x) GCC versions (newer versions
diff --git a/m4/Makefile.inc b/m4/Makefile.inc
index ad3048b..4f2b6b2 100644
--- a/m4/Makefile.inc
+++ b/m4/Makefile.inc
@@ -37,11 +37,11 @@ dist_automake_ac_DATA = \
   %D%/install-sh.m4 \
   %D%/lex.m4 \
   %D%/lispdir.m4 \
-  %D%/minuso.m4 \
   %D%/missing.m4 \
   %D%/obsolete.m4 \
   %D%/options.m4 \
   %D%/python.m4 \
+  %D%/prog-cc-c-o.m4 \
   %D%/runlog.m4 \
   %D%/sanity.m4 \
   %D%/silent.m4 \
diff --git a/m4/ar-lib.m4 b/m4/ar-lib.m4
index f895f6b..58726d0 100644
--- a/m4/ar-lib.m4
+++ b/m4/ar-lib.m4
@@ -19,7 +19,8 @@ AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
 : ${AR=ar}
 
 AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
-  [am_cv_ar_interface=ar
+  [AC_LANG_PUSH([C])
+   am_cv_ar_interface=ar
    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
      [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
       AC_TRY_EVAL([am_ar_try])
@@ -36,7 +37,7 @@ AC_CACHE_CHECK([the archiver ($AR) interface], 
[am_cv_ar_interface],
       fi
       rm -f conftest.lib libconftest.a
      ])
-   ])
+   AC_LANG_POP([C])])
 
 case $am_cv_ar_interface in
 ar)
diff --git a/m4/init.m4 b/m4/init.m4
index a2f301c..d34717d 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -9,6 +9,12 @@
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -101,12 +107,6 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
                  [m4_define([AC_PROG_OBJCXX],
                             
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-dnl Automatically invoke AM_PROG_CC_C_O as necessary.  Since AC_PROG_CC is
-dnl usually called after AM_INIT_AUTOMAKE, we arrange for the test to be
-dnl done later by AC_CONFIG_COMMANDS_PRE.
-AC_CONFIG_COMMANDS_PRE([AC_PROVIDE_IFELSE(
-    [AC_PROG_CC],
-    [AC_LANG_PUSH([C]) AM_PROG_CC_C_O AC_LANG_POP([C])])])dnl
 AC_REQUIRE([AM_SILENT_RULES])dnl
 
 # POSIX will say in a future version that running "rm -f" with no argument
diff --git a/m4/minuso.m4 b/m4/minuso.m4
deleted file mode 100644
index 06f74c9..0000000
--- a/m4/minuso.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-##                                                          -*- Autoconf -*-
-# Copyright (C) 1999-2013 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.
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
diff --git a/m4/prog-cc-c-o.m4 b/m4/prog-cc-c-o.m4
new file mode 100644
index 0000000..3b2a849
--- /dev/null
+++ b/m4/prog-cc-c-o.m4
@@ -0,0 +1,47 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 1999-2013 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.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
diff --git a/maintainer/syntax-checks.mk b/maintainer/syntax-checks.mk
index a7d354e..f77b6b9 100644
--- a/maintainer/syntax-checks.mk
+++ b/maintainer/syntax-checks.mk
@@ -62,9 +62,7 @@ sc_tests_make_can_chain_suffix_rules \
 sc_tests_make_dont_do_useless_vpath_rebuilds \
 sc_no_dotmake_target \
 sc_no_am_makeflags \
-$(sc_obsolete_requirements_rules) \
 $(sc_renamed_variables_rules) \
-$(sc_variable_typos_rules) \
 sc_no_RECHECK_LOGS \
 sc_tests_no_make_e \
 sc_docs_no_make_e \
@@ -77,7 +75,6 @@ sc_tests_command_subst \
 sc_tests_no_run_make_redirect \
 sc_tests_exit_not_Exit \
 sc_tests_automake_fails \
-sc_tests_required_after_defs \
 sc_tests_plain_sleep \
 sc_tests_ls_t \
 sc_m4_am_plain_egrep_fgrep \
@@ -88,10 +85,30 @@ sc_unquoted_DESTDIR \
 sc_tabs_in_texi \
 sc_at_in_texi
 
-## These check avoids accidental configure substitutions in the source.
-## There are exactly 7 lines that should be modified from automake.in to
-## automake, and 9 lines that should be modified from aclocal.in to
-## aclocal.
+$(syntax_check_rules): bin/automake bin/aclocal
+maintainer-check: $(syntax_check_rules)
+.PHONY: maintainer-check $(syntax_check_rules)
+
+# I'm a lazy typist.
+lint: maintainer-check
+.PHONY: lint
+
+# The recipes of syntax checks require a modern GNU grep.
+sc_sanity_gnu_grep:
+       $(AM_V_GEN)grep --version | grep 'GNU grep' >/dev/null 2>&1 \
+         && ab=$$(printf 'a\nb') \
+         && test "$$(printf 'xa\nb\nc' | grep -Pzo 'a\nb')" = "$$ab" \
+         || { \
+           echo "Syntax checks recipes require a modern GNU grep" >&2; \
+           exit 1; \
+         }
+.PHONY: sc_sanity_gnu_grep
+$(syntax_check_rules): sc_sanity_gnu_grep
+
+# These check avoids accidental configure substitutions in the source.
+# There are exactly 7 lines that should be modified from automake.in to
+# automake, and 9 lines that should be modified from aclocal.in to
+# aclocal.
 automake_diff_no = 7
 aclocal_diff_no = 9
 sc_diff_automake sc_diff_aclocal: in=$($*_in)
@@ -114,15 +131,15 @@ sc_diff_automake sc_diff_aclocal: sc_diff_% :
          } >&2; \
        rm -f $$in $$out $$diffs
 
-## Expect no instances of '${...}'.  However, $${...} is ok, since that
-## is a shell construct, not a Makefile construct.
+# Expect no instances of '${...}'.  However, $${...} is ok, since that
+# is a shell construct, not a Makefile construct.
 sc_no_brace_variable_expansions:
        @if grep -v '^ *#' $(ams) | grep -F '$${' | grep -F -v '$$$$'; then \
          echo "Found too many uses of '\$${' in the lines above." 1>&2; \
          exit 1; \
        else :; fi
 
-## Make sure 'rm' is called with '-f'.
+# Make sure 'rm' is called with '-f'.
 sc_rm_minus_f:
        @if grep -v '^#' $(ams) $(xtests) \
           | grep -vE 
'/(rm-f-probe\.sh|spy-rm\.tap|subobj-clean.*-pr10697\.sh):' \
@@ -132,10 +149,10 @@ sc_rm_minus_f:
          exit 1; \
        else :; fi
 
-## Never use something like "for file in $(FILES)", this doesn't work
-## if FILES is empty or if it contains shell meta characters (e.g. '$'
-## is commonly used in Java filenames).  Make an exception for
-## $(am__installdirs), which is already defined as properly quoted.
+# Never use something like "for file in $(FILES)", this doesn't work
+# if FILES is empty or if it contains shell meta characters (e.g. '$'
+# is commonly used in Java filenames).  Make an exception for
+# $(am__installdirs), which is already defined as properly quoted.
 sc_no_for_variable_in_macro:
        @LC_ALL=C; export LC_ALL; \
        if grep 'for .* in \$$(' $(ams) | grep -v '/Makefile\.am:' \
@@ -145,7 +162,7 @@ sc_no_for_variable_in_macro:
          exit 1; \
        else :; fi
 
-## The script and variable 'mkinstalldirs' are obsolete.
+# The script and variable 'mkinstalldirs' are obsolete.
 sc_mkinstalldirs:
        @files="\
          $(xtests) \
@@ -160,7 +177,7 @@ sc_mkinstalldirs:
          exit 1; \
        else :; fi
 
-## Make sure all calls to PRE/NORMAL/POST_INSTALL/UNINSTALL
+# Make sure all calls to PRE/NORMAL/POST_INSTALL/UNINSTALL
 sc_pre_normal_post_install_uninstall:
        @if grep -E -n '\((PRE|NORMAL|POST)_(|UN)INSTALL\)' $(ams) | \
              grep -v ':##' | grep -v ':        @\$$('; then \
@@ -168,7 +185,7 @@ sc_pre_normal_post_install_uninstall:
          exit 1; \
        else :; fi
 
-## We never want to use "undef", only "delete", but for $/.
+# We never want to use "undef", only "delete", but for $/.
 sc_perl_no_undef:
        @if grep -n -w 'undef ' $(automake_in) | \
              grep -F -v 'undef $$/'; then \
@@ -176,7 +193,7 @@ sc_perl_no_undef:
          exit 1; \
        fi
 
-## We never want split (/ /,...), only split (' ', ...).
+# We never want split (/ /,...), only split (' ', ...).
 sc_perl_no_split_regex_space:
        @if grep -n 'split (/ /' $(automake_in) $(acloca_in); then \
          echo "Found bad split in the lines above." 1>&2; \
@@ -197,7 +214,7 @@ sc_no_am_cd:
          exit 1; \
        else :; fi
 
-## Using @_ in a scalar context is most probably a programming error.
+# Using @_ in a scalar context is most probably a programming error.
 sc_perl_at_uscore_in_scalar_context:
        @if grep -Hn 'address@hidden) ] *= address@hidden' \
            $(automake_in) $(aclocal_in); then \
@@ -205,7 +222,7 @@ sc_perl_at_uscore_in_scalar_context:
          exit 1; \
        fi
 
-## Allow only few variables to be localized in automake and aclocal.
+# Allow only few variables to be localized in automake and aclocal.
 sc_perl_local:
        @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' \
              $(automake_in) $(aclocal_in) | \
@@ -214,15 +231,15 @@ sc_perl_local:
          exit 1; \
        fi
 
-## Don't let AMDEP_TRUE substitution appear in automake.in.
+# Don't let AMDEP_TRUE substitution appear in automake.in.
 sc_AMDEP_TRUE_in_automake_in:
        @if grep '@AMDEP''_TRUE@' $(automake_in); then \
          echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
          exit 1; \
        fi
 
-## Tests should never require GNU make explicitly: automake-ng assumes
-## it unconditionally.
+# Tests should never require GNU make explicitly: automake-ng assumes
+# it unconditionally.
 sc_tests_no_gmake_requirement:
        @if grep -iE '^ *required=.*\b(g|gnu)make\b' $(xtests) $(xdefs); \
        then \
@@ -230,9 +247,9 @@ sc_tests_no_gmake_requirement:
          exit 1; \
        fi
 
-## Tests should never check explicitly whether the make program being
-## used in the test suite is indeed GNU make: automake-ng assumes it
-## unconditionally.
+# Tests should never check explicitly whether the make program being
+# used in the test suite is indeed GNU make: automake-ng assumes it
+# unconditionally.
 sc_tests_no_gmake_checking:
        @if grep -E '\b(is|using)_g(nu)?make\b' $(xtests) $(xdefs); \
        then \
@@ -241,8 +258,8 @@ sc_tests_no_gmake_checking:
          exit 1; \
        fi
 
-## GNU make can obviously chain suffix rules, so don't try to check
-## whether this is the case.
+# GNU make can obviously chain suffix rules, so don't try to check
+# whether this is the case.
 sc_tests_make_can_chain_suffix_rules:
        @if grep 'chain_suffix_rule' $(xtests); then \
          echo 'GNU make can implicitly chain suffix rules; tests' \
@@ -250,8 +267,8 @@ sc_tests_make_can_chain_suffix_rules:
          exit 1; \
        fi
 
-## Automake bug#7884 affects only FreeBSD make, so that we don't
-## need to work around in any of our tests anymore.
+# Automake bug#7884 affects only FreeBSD make, so that we don't
+# need to work around in any of our tests anymore.
 sc_tests_make_dont_do_useless_vpath_rebuilds:
        @if grep -E 'useless_vpath_rebuild|yl_distcheck' $(xtests); then \
          echo 'No need to work around automake bug#7884 anymore;' \
@@ -259,7 +276,7 @@ sc_tests_make_dont_do_useless_vpath_rebuilds:
          exit 1; \
        fi
 
-## GNU make supports POSIX-style runtime include directives.
+# GNU make supports POSIX-style runtime include directives.
 sc_grep_for_bad_make_include = \
   if grep -E 'AM_MAKE_INCLUDE|am__(include|quote)' $$files; then \
     echo 'GNU make supports runtime "include" directive.' 1>&2; \
@@ -281,8 +298,8 @@ sc_make_simple_include:
         "; \
         $(sc_grep_for_bad_make_include)
 
-## The '.MAKE' special target is NetBSD-make specific, and not supported
-## by GNU make.  No point in using it.
+# The '.MAKE' special target is NetBSD-make specific, and not supported
+# by GNU make.  No point in using it.
 sc_no_dotmake_target:
        @files="\
          $(ams) \
@@ -296,9 +313,9 @@ sc_no_dotmake_target:
          exit 1; \
        fi
 
-## $(AM_MAKEFLAGS) is obsolete now that we assume GNU make, since it
-## is smart enough to correctly pass the values of macros redefined on
-## the command line to sub-make invocations.
+# $(AM_MAKEFLAGS) is obsolete now that we assume GNU make, since it
+# is smart enough to correctly pass the values of macros redefined on
+# the command line to sub-make invocations.
 sc_no_am_makeflags:
        @files="\
          $(xtests) \
@@ -353,10 +370,10 @@ sc_no_RECHECK_LOGS:
          exit 1; \
        fi
 
-## "make -e" is brittle and unsafe, since it let *all* the environment
-## win over the macro definitions in the Makefiles.  We needed it when
-## we couldn't assume GNU make, but now that the tide has turned, it's
-## better to prohibit it altogether.
+# "make -e" is brittle and unsafe, since it let *all* the environment
+# win over the macro definitions in the Makefiles.  We needed it when
+# we couldn't assume GNU make, but now that the tide has turned, it's
+# better to prohibit it altogether.
 sc_tests_no_make_e:
        @if grep -E '\$$MAKE\b.* -[a-zA-Z0-9]*e' $(xtests); then \
          echo "\"make -e\" is brittle, don't use it." 1>&2; \
@@ -369,7 +386,7 @@ sc_docs_no_make_e:
          exit 1; \
        fi
 
-## Look out for some obsolete variables.
+# Look out for some obsolete variables.
 sc_tests_obsolete_variables:
        @vars=" \
          using_tap \
@@ -397,23 +414,10 @@ sc_tests_obsolete_variables:
          exit 1; \
        else :; fi
 
-## Look out for obsolete requirements specified in the test cases.
-sc_obsolete_requirements_rules = sc_no_texi2dvi-o sc_no_makeinfo-html
-modern-requirement.texi2dvi-o = texi2dvi
-modern-requirement.makeinfo-html = makeinfo
-
-$(sc_obsolete_requirements_rules): sc_no_% :
-       @if grep -E 'required=.*\b$*\b' $(xtests); then \
-         echo "Requirement '$*' is obsolete and shouldn't" \
-              "be used anymore." >&2; \
-         echo "You should use '$(modern-requirement.$*)' instead." >&2; \
-         exit 1; \
-       fi
-
-## Tests should never call some programs directly, but only through the
-## corresponding variable (e.g., '$MAKE', not 'make').  This will allow
-## the programs to be overridden at configure time (for less brittleness)
-## or by the user at make time (to allow better testsuite coverage).
+# Tests should never call some programs directly, but only through the
+# corresponding variable (e.g., '$MAKE', not 'make').  This will allow
+# the programs to be overridden at configure time (for less brittleness)
+# or by the user at make time (to allow better testsuite coverage).
 sc_tests_plain_check_rules = \
   sc_tests_plain_egrep \
   sc_tests_plain_fgrep \
@@ -442,20 +446,20 @@ $(sc_tests_plain_check_rules): sc_tests_plain_% :
           exit 1; \
        fi
 
-## Tests should only use END and EOF for here documents
-## (so that the next test is effective).
+# Tests should only use END and EOF for here documents
+# (so that the next test is effective).
 sc_tests_here_document_format:
        @if grep '<<' $(xtests) | grep -Ev '\b(END|EOF)\b|\bcout <<'; then \
          echo 'Use here documents with "END" and "EOF" only, for 
greppability.' 1>&2; \
          exit 1; \
        fi
 
-## Our test case should use the $(...) POSIX form for command substitution,
-## rather than the older `...` form.
-## The point of ignoring text on here-documents is that we want to exempt
-## Makefile.am rules, configure.ac code and helper shell script created and
-## used by out shell scripts, because Autoconf (as of version 2.69) does not
-## yet ensure that $CONFIG_SHELL will be set to a proper POSIX shell.
+# Our test case should use the $(...) POSIX form for command substitution,
+# rather than the older `...` form.
+# The point of ignoring text on here-documents is that we want to exempt
+# Makefile.am rules, configure.ac code and helper shell script created and
+# used by out shell scripts, because Autoconf (as of version 2.69) does not
+# yet ensure that $CONFIG_SHELL will be set to a proper POSIX shell.
 sc_tests_command_subst:
        @found=false; \
        scan () { \
@@ -477,24 +481,24 @@ sc_tests_command_subst:
          exit 1; \
        fi
 
-## Tests should no longer call 'Exit', just 'exit'.  That's because we
-## now have in place a better workaround to ensure the exit status is
-## transported correctly across the exit trap.
+# Tests should no longer call 'Exit', just 'exit'.  That's because we
+# now have in place a better workaround to ensure the exit status is
+# transported correctly across the exit trap.
 sc_tests_exit_not_Exit:
        @if grep 'Exit' $(xtests) $(xdefs) | grep -Ev '^[^:]+: *#' | grep .; 
then \
          echo "Use 'exit', not 'Exit'; it's obsolete now." 1>&2; \
          exit 1; \
        fi
 
-## Guard against obsolescent uses of ./defs in tests.  Now,
-## 'test-init.sh' should be used instead.
+# Guard against obsolescent uses of ./defs in tests.  Now,
+# 'test-init.sh' should be used instead.
 sc_tests_no_source_defs:
        @if grep -E '\. .*defs($$| )' $(xtests); then \
          echo "Source 'test-init.sh', not './defs'." 1>&2; \
          exit 1; \
        fi
 
-## Invocation of 'run_make' should not have output redirections.
+# Invocation of 'run_make' should not have output redirections.
 sc_tests_no_run_make_redirect:
        @if grep -Pzo '.*(\$$MAKE|\brun_make)\b(.*(\\\n))*.*>.*' $(xtests); \
        then \
@@ -504,25 +508,16 @@ sc_tests_no_run_make_redirect:
          exit 1; \
        fi
 
-## Use AUTOMAKE_fails when appropriate
+# Use AUTOMAKE_fails when appropriate
 sc_tests_automake_fails:
        @if grep -v '^#' $(xtests) | grep '\$$AUTOMAKE.*&&.*exit'; then \
          echo 'Use AUTOMAKE_fails + grep to catch automake failures in the 
above tests.' 1>&2;  \
          exit 1; \
        fi
 
-## Setting 'required' after sourcing 'test-init.sh' is a bug.
-sc_tests_required_after_defs:
-       @for file in $(xtests); do \
-         if out=`sed -n '/test-init\.sh/,$${/required=/p;}' $$file`; test -n 
"$$out"; then \
-           echo 'Do not set "required" after sourcing "test-init.sh" in 
'"$$file: $$out" 1>&2; \
-           exit 1; \
-         fi; \
-       done
-
-## Prefer use of our 'is_newest' auxiliary script over the more hacky
-## idiom "test $(ls -1t new old | sed 1q) = new", which is both more
-## cumbersome and more fragile.
+# Prefer use of our 'is_newest' auxiliary script over the more hacky
+# idiom "test $(ls -1t new old | sed 1q) = new", which is both more
+# cumbersome and more fragile.
 sc_tests_ls_t:
        @if LC_ALL=C grep -E '\bls(\s+-[a-zA-Z0-9]+)*\s+-[a-zA-Z0-9]*t' \
            $(xtests); then \
@@ -530,16 +525,16 @@ sc_tests_ls_t:
          exit 1; \
        fi
 
-## Never use 'sleep 1' to create files with different timestamps.
-## Use '$sleep' instead.  Some file systems (e.g., Windows) have only
-## a 2sec resolution.
+# Never use 'sleep 1' to create files with different timestamps.
+# Use '$sleep' instead.  Some file systems (e.g., Windows) have only
+# a 2sec resolution.
 sc_tests_plain_sleep:
        @if grep -E '\bsleep +[12345]\b' $(xtests); then \
          echo 'Do not use "sleep x" in the above tests.  Use "$$sleep" 
instead.' 1>&2; \
          exit 1; \
        fi
 
-## fgrep and egrep are not required by POSIX.
+# fgrep and egrep are not required by POSIX.
 sc_m4_am_plain_egrep_fgrep:
        @if grep -E '\b[ef]grep\b' $(ams) $(srcdir)/m4/*.m4; then \
          echo 'Do not use egrep or fgrep in the above files,' \
@@ -547,10 +542,10 @@ sc_m4_am_plain_egrep_fgrep:
          exit 1; \
        fi
 
-## Use 'configure.ac', not the obsolete 'configure.in', as the name
-## for configure input files in our testsuite.  The latter  has been
-## deprecated for several years (at least since autoconf 2.50) and
-## support for it will be removed in Automake 1.14.
+# Use 'configure.ac', not the obsolete 'configure.in', as the name
+# for configure input files in our testsuite.  The latter  has been
+# deprecated for several years (at least since autoconf 2.50) and
+# support for it will be removed in Automake 2.0.
 sc_tests_no_configure_in:
        @if grep -E '\bconfigure\\*\.in\b' $(xtests) $(xdefs); then \
          echo "Use 'configure.ac', not 'configure.in', as the name" >&2; \
@@ -558,11 +553,11 @@ sc_tests_no_configure_in:
          exit 1; \
        fi
 
-## Rule to ensure that the testsuite has been run before.  We don't depend
-## on 'check' here, because that would be very wasteful in the common case.
-## We could run "make check AM_LAZY_CHECK=yes" and avoid toplevel races with
-## AM_RECURSIVE_TARGETS.  Suggest keeping test directories around for
-## greppability of the Makefile.in files.
+# Rule to ensure that the testsuite has been run before.  We don't depend
+# on 'check' here, because that would be very wasteful in the common case.
+# We could run "make check AM_LAZY_CHECK=yes" and avoid toplevel races with
+# AM_RECURSIVE_TARGETS.  Suggest keeping test directories around for
+# greppability of the Makefile.in files.
 sc_ensure_testsuite_has_run:
        @if test ! -f '$(TEST_SUITE_LOG)'; then \
          echo 'Run "env keep_testdirs=yes make check" before' \
@@ -571,15 +566,15 @@ sc_ensure_testsuite_has_run:
        fi
 .PHONY: sc_ensure_testsuite_has_run
 
-## Ensure our warning and error messages do not contain duplicate 'warning:' 
prefixes.
-## This test actually depends on the testsuite having been run before.
+# Ensure our warning and error messages do not contain duplicate 'warning:' 
prefixes.
+# This test actually depends on the testsuite having been run before.
 sc_tests_logs_duplicate_prefixes: sc_ensure_testsuite_has_run
        @if grep -E '(warning|error):.*(warning|error):' t/*.log; then \
          echo 'Duplicate warning/error message prefixes seen in above tests.' 
>&2; \
          exit 1; \
        fi
 
-## Using ':' as a PATH separator is not portable.
+# Using ':' as a PATH separator is not portable.
 sc_tests_PATH_SEPARATOR:
        @if grep -E '\bPATH=.*:.*' $(xtests) ; then \
          echo "Use '\$$PATH_SEPARATOR', not ':', in PATH definitions" \
@@ -587,8 +582,8 @@ sc_tests_PATH_SEPARATOR:
          exit 1; \
        fi
 
-## Try to make sure all @...@ substitutions are covered by our
-## substitution rule.
+# Try to make sure all @...@ substitutions are covered by our
+# substitution rule.
 sc_perl_at_substs:
        @if test `grep -E 'address@hidden@' bin/aclocal | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in aclocal" 1>&2; \
@@ -617,11 +612,3 @@ sc_at_in_texi:
          echo 'Unescaped @.' 1>&2; \
          exit 1; \
        fi
-
-$(syntax_check_rules): bin/automake bin/aclocal
-maintainer-check: $(syntax_check_rules)
-.PHONY: maintainer-check $(syntax_check_rules)
-
-# I'm a lazy typist.
-lint: maintainer-check
-.PHONY: lint
diff --git a/t/add-missing.tap b/t/add-missing.tap
index 594e465..b53fbfd 100644
--- a/t/add-missing.tap
+++ b/t/add-missing.tap
@@ -248,6 +248,7 @@ check_ <<'END'
 depcomp/C
 == Files ==
 depcomp
+compile
 == configure.ac ==
 AC_PROG_CC
 == Makefile.am ==
@@ -272,10 +273,9 @@ compile
 == Files ==
 compile
 == configure.ac ==
-# Using AC_PROG_CC and AC_OUTPUT in configure.ac should be enough.
+# Using AC_PROG_CC in configure.ac should be enough.
 # No need to also define, say, xxx_PROGRAMS in Makefile.am.
 AC_PROG_CC
-AC_OUTPUT
 END
 
 # For config.guess and config.sub.
@@ -297,6 +297,7 @@ check_ <<'END'
 ylwrap/Lex
 == Files ==
 ylwrap
+compile
 == configure.ac ==
 AC_PROG_CC
 AC_PROG_LEX
@@ -311,6 +312,7 @@ check_ <<'END'
 ylwrap/Yacc
 == Files ==
 ylwrap
+compile
 == configure.ac ==
 AC_PROG_CC
 AC_PROG_YACC
diff --git a/t/am-prog-cc-c-o.sh b/t/am-prog-cc-c-o.sh
index 920a0dc..08522a4 100644
--- a/t/am-prog-cc-c-o.sh
+++ b/t/am-prog-cc-c-o.sh
@@ -29,25 +29,28 @@ echo 'int main (void) { return 0; }' > foo.c
 
 cp configure.ac configure.bak
 
-cat >> configure.ac << 'END'
-# Since AM_PROG_CC_C_O rewrites $CC, it's an error to call AC_PROG_CC
-# after it.
-AM_PROG_CC_C_O
-AC_PROG_CC
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AM_TWEAKED_OUTPUT], [
+# For debugging.
+printf "CC = '%s'\\n" "$CC"
+# Make sure that $CC can be used after AM_PROG_CC_C_O.
+$CC --version || exit 1
+$CC -v || exit 1
+# $CC rewrite should only take place on time.
+case " $CC " in
+  *" compile"*" compile"*) AC_MSG_ERROR([CC rewritten twice]);;
+esac
+AC_OUTPUT
+])
 END
 
-$ACLOCAL -Wnone 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
-grep '^configure\.ac:7:.* AC_PROG_CC .*called after AM_PROG_CC_C_O' stderr
+# ---
 
 cat configure.bak - > configure.ac << 'END'
 dnl It's OK to call AM_PROG_CC_C_O after AC_PROG_CC.
 AC_PROG_CC
 AM_PROG_CC_C_O
-# Make sure that $CC can be used after AM_PROG_CC_C_O.
-$CC --version || exit 1
-$CC -v || exit 1
-AC_OUTPUT
+AM_TWEAKED_OUTPUT
 END
 
 $ACLOCAL
@@ -61,21 +64,49 @@ if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
 else
   $EGREP 'understands? -c and -o together.* yes$' stdout
 fi
+
 # No repeated checks please.
 test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
-$MAKE
 
+$MAKE
 $MAKE maintainer-clean
+rm -rf autom4te*.cache
+
+# ---
+
+cat configure.bak - > configure.ac << 'END'
+dnl It's also OK to call AM_PROG_CC_C_O *before* AC_PROG_CC.
+AM_PROG_CC_C_O
+AC_PROG_CC
+AM_TWEAKED_OUTPUT
+END
 
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
+  $EGREP 'understands? -c and -o together.* no$' stdout
+else
+  $EGREP 'understands? -c and -o together.* yes$' stdout
+fi
+
+# Repeated checks are OK in this case, but should be cached.
+test $(grep ".*-c['\" ].*-o['\" ]" stdout \
+        | $FGREP -v ' (cached) ' | wc -l) -eq 1
+
+$MAKE
+$MAKE maintainer-clean
 rm -rf autom4te*.cache
 
+# ---
+
 cat configure.bak - > configure.ac << 'END'
 dnl It's also OK to call AM_PROG_CC_C_O *without* AC_PROG_CC.
 AM_PROG_CC_C_O
-# Make sure that $CC can be used after AM_PROG_CC_C_O.
-$CC --version || exit 1
-$CC -v || exit 1
-AC_OUTPUT
+AM_TWEAKED_OUTPUT
 END
 
 $ACLOCAL
diff --git a/t/am-xargs-map.sh b/t/am-xargs-map.sh
index 7d97484..c4e581b 100644
--- a/t/am-xargs-map.sh
+++ b/t/am-xargs-map.sh
@@ -66,8 +66,7 @@ args1="0 1 2 3 4 5 6 7 8 9"
 args2="$args1 $args1"
 args4="$args2 $args2"
 
-$MAKE .am/nil WARN=yes 2>stderr || { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E .am/nil WARN=yes
 grep '^Makefile:' stderr # For debugging
 test $(grep -c "^Makefile:11: $args4$" stderr) -eq 4
 test $(grep -c "^Makefile:12: $args4$" stderr) -eq 4
diff --git a/t/ax/am-test-lib.sh b/t/ax/am-test-lib.sh
index a46576b..00eabbf 100644
--- a/t/ax/am-test-lib.sh
+++ b/t/ax/am-test-lib.sh
@@ -49,12 +49,11 @@ unset DESTDIR
 unset prefix exec_prefix bindir datarootdir datadir docdir dvidir
 unset htmldir includedir infodir libdir libexecdir localedir mandir
 unset oldincludedir pdfdir psdir sbindir sharedstatedir sysconfdir
-# Unset variables that might change the "make distcheck" behaviour.
+# Unset variables that might influcence "make distcheck".
 unset DISTCHECK_CONFIGURE_FLAGS AM_DISTCHECK_CONFIGURE_FLAGS
 # Used by install rules for info files.
 unset AM_UPDATE_INFO_DIR
-# The tests call "make -e" but we do not want $srcdir from the environment
-# to override the definition from the Makefile.
+# We don't want to use the $srcdir value exported by the test driver.
 unset srcdir
 # Also unset variables that control our test driver.  While not
 # conceptually independent, they cause some changed semantics we
@@ -184,14 +183,14 @@ run_make ()
   am__make_redirect_stderr=no
   am__make_redirect_stdall=no
   am__make_flags=
-  # Follow-up code might want to analyse these, so don't make them as
-  # private, nor unset them later.
-  am_make_rc_exp=0
-  am_make_rc_got=0
+  am__make_rc_exp=0
+  # Follow-up code might want to analyse this, so mark is as
+  # publicly accessible (no double undesrscore).
+  am_make_rc=0
   # Parse options for this function.
   while test $# -gt 0; do
     case $1 in
-      -e) am_make_rc_exp=$2; shift;;
+      -e) am__make_rc_exp=$2; shift;;
       -O) am__make_redirect_stdout=yes;;
       -E) am__make_redirect_stderr=yes;;
       -M) am__make_redirect_stdall=yes;;
@@ -220,9 +219,9 @@ run_make ()
       fi
     fi
     exec $MAKE ${1+"$@"}
-  ) || am_make_rc_got=$?
+  ) || am_make_rc=$?
 
-  if test $am_make_rc_got -eq 253; then
+  if test $am_make_rc -eq 253; then
     fatal_ "run_make: problems in redirecting make output"
   fi
 
@@ -237,17 +236,17 @@ run_make ()
     fi
   fi
 
-  case $am_make_rc_exp in
+  case $am__make_rc_exp in
     IGNORE)
       : Ignore exit status
       ;;
     FAIL)
-      test $am_make_rc_got -gt 0 || return 1
+      test $am_make_rc -gt 0 || return 1
       ;;
     *)
-     test $am_make_rc_exp -ge 0 && test $am_make_rc_exp -le 255 \
-       || fatal_ "invalid expected exit status: '$am_make_rc_exp'"
-     test $am_make_rc_exp -eq $am_make_rc_got || return 1
+     test $am__make_rc_exp -ge 0 && test $am__make_rc_exp -le 255 \
+       || fatal_ "invalid expected exit status: '$am__make_rc_exp'"
+     test $am_make_rc -eq $am__make_rc_exp || return 1
      ;;
   esac
 }
@@ -604,6 +603,11 @@ require_tool ()
   case $1 in
     cc|c++|fortran|fortran77)
       require_compiler_ $1;;
+    -c-o)
+      if test x"$AM_TESTSUITE_SIMULATING_NO_CC_C_O" = x"yes"; then
+        skip_all_ "need a C compiler that grasps -c and -o together"
+      fi
+      ;;
     xsi-lib-shell)
       if test x"$am_test_prefer_config_shell" = x"yes"; then
         require_xsi "$SHELL"
diff --git a/t/ax/tap-summary-aux.sh b/t/ax/tap-summary-aux.sh
index 472c43f..a914087 100644
--- a/t/ax/tap-summary-aux.sh
+++ b/t/ax/tap-summary-aux.sh
@@ -62,9 +62,9 @@ do_check ()
   fi
   run_make -O -e IGNORE $make_args check
   if test $expect_failure = yes; then
-    test $am_make_rc_got -gt 0 || exit 1
+    test $am_make_rc -gt 0 || exit 1
   else
-    test $am_make_rc_got -eq 0 || exit 1
+    test $am_make_rc -eq 0 || exit 1
   fi
   $PERL "$am_testaux_srcdir"/extract-testsuite-summary.pl stdout >summary.got \
     || fatal_ "cannot extract testsuite summary"
diff --git a/t/ax/test-init.sh b/t/ax/test-init.sh
index 42db050..daf0bba 100644
--- a/t/ax/test-init.sh
+++ b/t/ax/test-init.sh
@@ -17,6 +17,10 @@
 
 set -e
 
+# The variable '$required' should no longer be modified after this
+# file gets sources.
+required=${required-}; readonly required
+
 # Source the actual code for test initialization and setup.
 . test-lib.sh
 . am-test-lib.sh
diff --git a/t/ax/testsuite-summary-checks.sh b/t/ax/testsuite-summary-checks.sh
index 2f1f801..d8c8f9c 100644
--- a/t/ax/testsuite-summary-checks.sh
+++ b/t/ax/testsuite-summary-checks.sh
@@ -75,9 +75,9 @@ do_check ()
   done
   run_make -O -e IGNORE check TESTS="$tests" XFAIL_TESTS="$xfail_tests"
   if $expect_failure; then
-    test $am_make_rc_got -gt 0 || exit 1
+    test $am_make_rc -gt 0 || exit 1
   else
-    test $am_make_rc_got -eq 0 || exit 1
+    test $am_make_rc -eq 0 || exit 1
   fi
   $PERL "$am_testaux_srcdir"/extract-testsuite-summary.pl stdout >summary.got \
    || fatal_ "cannot extract testsuite summary"
diff --git a/t/ccnoco-deps.sh b/t/ccnoco-deps.sh
new file mode 100755
index 0000000..d4931d5
--- /dev/null
+++ b/t/ccnoco-deps.sh
@@ -0,0 +1,82 @@
+#! /bin/sh
+# Copyright (C) 2013 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 dependency tracking can also work with compilers that
+# doesn't understand '-c -o', even if the AM_PROG_CC_C_O macro is not
+# explicitly called.
+
+required=gcc # For 'cc-no-c-o'.
+. test-init.sh
+
+echo '#define myStr "Hello"' > foobar.h
+
+cat > foo.c << 'END'
+#include <stdio.h>
+#include "foobar.h"
+int main (void)
+{
+  printf ("%s\n", myStr);
+  return 0;
+}
+END
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foobar.h
+check-deps: all
+       test -n '$(DEPDIR)' && test -d '$(DEPDIR)'
+       ls -l $(DEPDIR)
+       grep 'stdio\.h' $(DEPDIR)/foo.Po
+       grep 'foobar\.h' $(DEPDIR)/foo.Po
+check-updated: all
+       is_newest foo foobar.h
+END
+
+# We deliberately don't invoke AM_PROG_CC_C_O here.
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+# Make sure the compiler doesn't understand '-c -o'.
+CC=$am_testaux_builddir/cc-no-c-o; export CC
+
+./configure >stdout || { cat stdout; exit 1; }
+cat stdout
+$EGREP 'understands? -c and -o together.* no$' stdout
+grep '^checking dependency style .*\.\.\. gcc' stdout
+
+$MAKE check-deps
+
+if ! cross_compiling; then
+  ./foo
+  test "$(./foo)" = Hello
+fi
+
+$sleep
+echo '#define myStr "Howdy"' > foobar.h
+$MAKE check-updated
+
+if ! cross_compiling; then
+  ./foo
+  test "$(./foo)" = Howdy
+fi
+
+:
diff --git a/t/ccnoco.sh b/t/ccnoco-lib.sh
old mode 100644
new mode 100755
similarity index 70%
copy from t/ccnoco.sh
copy to t/ccnoco-lib.sh
index be9be37..a6464ec
--- a/t/ccnoco.sh
+++ b/t/ccnoco-lib.sh
@@ -22,31 +22,33 @@ required=gcc # For cc-no-c-o.
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-$CC --version; $CC -v; # For debugging.
+$CC --version || exit 1
+$CC -v || exit 1
+AC_PROG_RANLIB
+AM_PROG_AR
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-bin_PROGRAMS = wish
-wish_SOURCES = a.c
+mylibsdir = $(libdir)/my-libs
+mylibs_LIBRARIES = libwish.a
+libwish_a_SOURCES = a.c
 # Make sure we need something strange.
-wish_CFLAGS = -g
+libwish_CFLAGS = -O0
 END
 
 cat > a.c << 'END'
-#include <stdio.h>
-
-int main ()
+int wish_granted (void)
 {
-   printf ("hi\n");
+   return 0;
 }
 END
 
-# Make sure the compiler doesn't understand '-c -o'
+# Make sure the compiler doesn't understand '-c -o'.
 CC=$am_testaux_builddir/cc-no-c-o; export CC
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Wall -Werror
 $AUTOMAKE --copy --add-missing
 
 for vpath in : false; do
@@ -57,9 +59,15 @@ for vpath in : false; do
   else
     srcdir=.
   fi
-  $srcdir/configure
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
   $MAKE
   cd $srcdir
 done
 
+$MAKE distcheck
+
 :
diff --git a/t/ccnoco.sh b/t/ccnoco-lt.sh
old mode 100644
new mode 100755
similarity index 53%
copy from t/ccnoco.sh
copy to t/ccnoco-lt.sh
index be9be37..793987b
--- a/t/ccnoco.sh
+++ b/t/ccnoco-lt.sh
@@ -14,37 +14,36 @@
 # 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 we can compile when the compiler doesn't
-# understand '-c -o'.
+# Test to make sure we can compile libtool libraries when the compiler
+# doesn't understand '-c -o'.
 
-required=gcc # For cc-no-c-o.
+required='gcc libtoolize' # For cc-no-c-o.
 . test-init.sh
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-$CC --version; $CC -v; # For debugging.
+AM_PROG_AR
+LT_INIT
+$CC --version
+$CC -v
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-bin_PROGRAMS = wish
-wish_SOURCES = a.c
-# Make sure we need something strange.
-wish_CFLAGS = -g
+lib_LTLIBRARIES = libwish.la
 END
 
-cat > a.c << 'END'
-#include <stdio.h>
-
-int main ()
+cat > libwish.c << 'END'
+int wish_granted (void)
 {
-   printf ("hi\n");
+   return 0;
 }
 END
 
-# Make sure the compiler doesn't understand '-c -o'
+# Make sure the compiler doesn't understand '-c -o'.
 CC=$am_testaux_builddir/cc-no-c-o; export CC
 
+libtoolize --verbose --install
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --copy --add-missing
@@ -57,9 +56,21 @@ for vpath in : false; do
   else
     srcdir=.
   fi
-  $srcdir/configure
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep ".*-c['\" ].*-o['\" ]" stdout \
+          | $FGREP -v ' -c -o file.o' | wc -l) -eq 1
+  # Once we have rewritten $CC to use our 'compile' wrapper script,
+  # libtool should pick it up correctly, and not mess with the
+  # redefinition.
+  grep '^checking if .*/compile .*supports -c -o file\.o\.\.\. yes' stdout
+  # And of course, we should be able to build our package.
   $MAKE
   cd $srcdir
 done
 
+$MAKE distcheck
+
 :
diff --git a/t/ccnoco.sh b/t/ccnoco.sh
index be9be37..d00b6f9 100644
--- a/t/ccnoco.sh
+++ b/t/ccnoco.sh
@@ -22,7 +22,8 @@ required=gcc # For cc-no-c-o.
 
 cat >> configure.ac << 'END'
 AC_PROG_CC
-$CC --version; $CC -v; # For debugging.
+$CC --version || exit 1
+$CC -v || exit 1
 AC_OUTPUT
 END
 
@@ -42,11 +43,11 @@ int main ()
 }
 END
 
-# Make sure the compiler doesn't understand '-c -o'
+# Make sure the compiler doesn't understand '-c -o'.
 CC=$am_testaux_builddir/cc-no-c-o; export CC
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Wall -Werror
 $AUTOMAKE --copy --add-missing
 
 for vpath in : false; do
@@ -57,9 +58,15 @@ for vpath in : false; do
   else
     srcdir=.
   fi
-  $srcdir/configure
+  $srcdir/configure >stdout || { cat stdout; exit 1; }
+  cat stdout
+  $EGREP 'understands? -c and -o together.* no$' stdout
+  # No repeated checks please.
+  test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
   $MAKE
   cd $srcdir
 done
 
+$MAKE distcheck
+
 :
diff --git a/t/cxx-lt-demo.sh b/t/cxx-lt-demo.sh
index d44852b..7e7f8dd 100644
--- a/t/cxx-lt-demo.sh
+++ b/t/cxx-lt-demo.sh
@@ -114,7 +114,6 @@ END
 
 cat > lib/libfoo.c++ << 'END'
 #include "libfoo.h++"
-#include <string>
 std::string target (void)
 {
   std::string s1 = "Test";
diff --git a/t/deleted-am.sh b/t/deleted-am.sh
index a651de5..7c73a82 100644
--- a/t/deleted-am.sh
+++ b/t/deleted-am.sh
@@ -47,7 +47,6 @@ $AUTOMAKE Makefile
 ./config.status Makefile
 $MAKE # Sanity check.
 rm -f foobar.am
-$sleep # Required to avoid racy failures with FreeBSD make.
 run_make -e FAIL -E
 # This error will come from automake, not make, so we can be stricter
 # in our grepping of it.
diff --git a/t/discover.sh b/t/discover.sh
index f841c5b..5d564b5 100644
--- a/t/discover.sh
+++ b/t/discover.sh
@@ -19,9 +19,9 @@
 . test-init.sh
 
 cat >> configure.ac << 'END'
+AC_PROG_CC
 AC_PROG_RANLIB
 AM_PROG_AR
-AC_PROG_CC
 AC_LIBOBJ([fsusage])
 AC_OUTPUT
 END
diff --git a/t/dist-formats.tap b/t/dist-formats.tap
index ac0410e..720318a 100644
--- a/t/dist-formats.tap
+++ b/t/dist-formats.tap
@@ -205,10 +205,8 @@ unset desc skip_reason
 #  Invalid distribution formats.  #
 # ------------------------------- #
 
-command_ok_ "invalid distribution formats [exit status]"  eval '
-  ! $MAKE dist AM_DIST_FORMATS="foobar tarZ shar" 2>stderr'
-
-cat stderr >&2 # For debugging.
+command_ok_ "invalid distribution formats [exit status]" \
+            run_make -E -e FAIL dist AM_DIST_FORMATS="foobar tarZ shar"
 
 command_ok_ "invalid distribution formats [error report]"  eval '
   sed -e "s/^/ /" -e "s/$/ /" stderr >stderr2 \
diff --git a/t/dist-srcdir2.sh b/t/dist-srcdir2.sh
index 9af4d94..0ff0481 100644
--- a/t/dist-srcdir2.sh
+++ b/t/dist-srcdir2.sh
@@ -38,8 +38,7 @@ cd build
 ../configure
 
 echo bad > filename-that-is-easy-to-grep
-$MAKE distdir 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -e FAIL -E distdir
 grep 'filename-that-is-easy-to-grep' stderr
 
 echo good > ../filename-that-is-easy-to-grep
diff --git a/t/distcheck-configure-flags.sh b/t/distcheck-configure-flags.sh
index 27d455f..ddc2432 100644
--- a/t/distcheck-configure-flags.sh
+++ b/t/distcheck-configure-flags.sh
@@ -38,8 +38,7 @@ $AUTOCONF
 # It should be ok to define DISTCHECK_CONFIGURE_FLAGS either on the
 # make command line or in the environment.
 
-env \
-  DISTCHECK_CONFIGURE_FLAGS='--enable-success sentence=it\ works\ :-\)' \
+env DISTCHECK_CONFIGURE_FLAGS='--enable-success sentence=it\ works\ :-\)' \
   $MAKE distcheck
 
 $MAKE distcheck \
diff --git a/t/link_cond.sh b/t/link_cond.sh
index 423ffe1..2a1fe62 100644
--- a/t/link_cond.sh
+++ b/t/link_cond.sh
@@ -64,7 +64,7 @@ $MAKE CXX=false
 
 # Sanity check.
 rm -f foo foo.exe
-$MAKE CC=false && exit 99
+run_make CC=false && fatal_ '"make CC=false" succeeded unexpectedly'
 
 $MAKE distclean
 
@@ -83,6 +83,6 @@ $MAKE CC=false
 
 # Sanity check.
 rm -f foo foo.exe
-$MAKE CXX=false && exit 99
+run_make CXX=false && fatal_ '"make CXX=false" succeeded unexpectedly'
 
 :
diff --git a/t/location.sh b/t/location.sh
index ea865c5..310160f 100644
--- a/t/location.sh
+++ b/t/location.sh
@@ -44,8 +44,6 @@ END
 # Smash the useless difference of lib file locations.
 smash_useless_diffs ()
 {
-  # FIXME: we could get rid of the second 's,,,' once we improve our
-  # wrapper scripts ...
   sed -e "s,^$am_amdir/\\([a-z]*\.am\\),\\1," \
       -e "s,^automake-$APIVERSION:,automake:," ${1+"$@"};
 }
diff --git a/t/no-spurious-install-recursive.sh 
b/t/no-spurious-install-recursive.sh
index 2f6cd55..c952114 100644
--- a/t/no-spurious-install-recursive.sh
+++ b/t/no-spurious-install-recursive.sh
@@ -32,8 +32,7 @@ $AUTOCONF
 ./configure
 
 for t in all check install; do
-  $MAKE -n $t-recursive 2>stderr && { cat stderr >&2; exit 1; }
-  cat stderr >&2
+  run_make -E -e FAIL -- -n $t-recursive
   grep " [Nn]o rule to make target.*[\`\"']$t-recursive" stderr
 done
 
diff --git a/t/nostdinc.sh b/t/nostdinc.sh
index f6f146e..22fbc7a 100644
--- a/t/nostdinc.sh
+++ b/t/nostdinc.sh
@@ -51,8 +51,7 @@ $AUTOMAKE --add-missing
 mkdir build
 cd build
 ../configure
-$MAKE V=1 > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O V=1
 grep '.*-I *\.' stdout && exit 1
 $MAKE clean
 # Shouldn't be picked up from builddir either.
@@ -62,8 +61,7 @@ cd ..
 
 # Test with $builddir = $srcdir
 ./configure
-$MAKE V=1 > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O V=1
 grep '.*-I *\.' stdout && exit 1
 
 :
diff --git a/t/parallel-tests-concatenated-suffix.sh 
b/t/parallel-tests-concatenated-suffix.sh
index ee83af1..337e9f8 100644
--- a/t/parallel-tests-concatenated-suffix.sh
+++ b/t/parallel-tests-concatenated-suffix.sh
@@ -43,13 +43,7 @@ $AUTOMAKE -a
 
 for j in '' -j4; do
 
-  # Use append mode here to avoid dropping output.  See automake bug#11413.
-  # Also, use 'echo' here to "nullify" the previous contents of 'stdout',
-  # since Solaris 10 /bin/sh would try to optimize a ':' away after the
-  # first iteration, even if it is redirected.
-  echo " " >stdout
-  $MAKE $j check >>stdout || { cat stdout; exit 1; }
-  cat stdout
+  run_make -O $j check
   count_test_results total=7 pass=7 fail=0 skip=0 xfail=0 xpass=0 error=0
   for t in $tests; do grep "^PASS: $t *$" stdout; done
 
diff --git a/t/parallel-tests-dynamic.sh b/t/parallel-tests-dynamic.sh
index 3652064..49d5717 100644
--- a/t/parallel-tests-dynamic.sh
+++ b/t/parallel-tests-dynamic.sh
@@ -98,9 +98,7 @@ $AUTOMAKE -a
 
 ./configure
 
-$MAKE check > stdout || { cat stdout; exit 1; }
-cat stdout
-
+run_make -O check
 count_test_results total=13 pass=9 fail=0 xpass=0 xfail=2 skip=2 error=0
 
 grep '^PASS: t/nosuffix$'  stdout
@@ -120,15 +118,13 @@ grep '^SKIP: mu$'          stdout
 $MAKE mostlyclean
 test "$(find . -name '*.log')" = ./config.log
 
-$MAKE distcheck > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O distcheck
 count_test_results total=13 pass=9 fail=0 xpass=0 xfail=2 skip=2 error=0
 
-$MAKE check tests1='$(wildcard t00*.sh t98?.sh)' \
-            tests2='$(shell ./get-tests-list | sed 1d)' \
-            TESTS='$(tests1) $(tests2)' \
-  > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O check \
+  tests1='$(wildcard t00*.sh t98?.sh)' \
+  tests2='$(shell ./get-tests-list | sed 1d)' \
+  TESTS='$(tests1) $(tests2)'
 
 count_test_results total=4 pass=3 fail=0 xpass=0 xfail=1 skip=0 error=0
 
@@ -144,13 +140,11 @@ $MAKE check TESTS='$(shell echo t00 | sed "s/$$/-foo/") 
t99'
 test -f t00-foo.log
 test -f t99.log
 
-$MAKE check \
-      foo='E9E9E' \
-      a='t00.err' \
-      b='${a:.err=-foo}' \
-      TESTS='$(b) t$(subst E,,$(foo)) $(call my_add_dirprefix,t,nosuffix)' \
-  > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O check \
+  foo='E9E9E' \
+  a='t00.err' \
+  b='${a:.err=-foo}' \
+  TESTS='$(b) t$(subst E,,$(foo)) $(call my_add_dirprefix,t,nosuffix)'
 
 count_test_results total=3 pass=2 fail=0 xpass=0 xfail=1 skip=0 error=0
 grep '^PASS: t/nosuffix'  stdout
diff --git a/t/parallel-tests-exit-statuses.sh 
b/t/parallel-tests-exit-statuses.sh
index 54181e2..6bbc615 100644
--- a/t/parallel-tests-exit-statuses.sh
+++ b/t/parallel-tests-exit-statuses.sh
@@ -72,7 +72,7 @@ sed '/^ERROR:/d' exp-1 > exp-2
 mk_ ()
 {
   n=$1; shift
-  unset am_make_rc_got
+  unset am_make_rc
   run_make -e IGNORE -O -- ${1+"$@"} check
   cat test-suite.log
   LC_ALL=C grep '^[A-Z][A-Z]*:' stdout | LC_ALL=C sort > got-$n
@@ -82,10 +82,10 @@ mk_ ()
 }
 
 mk_ 0
-test $am_make_rc_got -gt 0
+test $am_make_rc -gt 0
 mk_ 1 XFAIL_TESTS="$failure_statuses 99"
-test $am_make_rc_got -gt 0
+test $am_make_rc -gt 0
 mk_ 2 XFAIL_TESTS="$failure_statuses" TESTS="0 77 $failure_statuses"
-test $am_make_rc_got -eq 0
+test $am_make_rc -eq 0
 
 :
diff --git a/t/parallel-tests-extra-programs.sh 
b/t/parallel-tests-extra-programs.sh
index 1cfcf00..7e219c3 100644
--- a/t/parallel-tests-extra-programs.sh
+++ b/t/parallel-tests-extra-programs.sh
@@ -117,7 +117,7 @@ $AUTOMAKE -a
 
 run_make -E -O -e IGNORE -- -k check
 ls -l
-test $am_make_rc_got -gt 0
+test $am_make_rc -gt 0
 
 # Files that should have been created, with the expected content.
 cat bar.c
@@ -149,7 +149,7 @@ echo 'int main (void) { return 0; }' > none.c
 
 run_make -O -e IGNORE AM_LAZY_CHECK=yes check
 ls -l # For debugging.
-test $am_make_rc_got -eq 0 || exit 1
+test $am_make_rc -eq 0 || exit 1
 
 # For debugging.
 stat stamp foo.log bar.log baz.log || :
diff --git a/t/parallel-tests-fd-redirect-exeext.sh 
b/t/parallel-tests-fd-redirect-exeext.sh
index 6e7fae2..c4b9aab 100644
--- a/t/parallel-tests-fd-redirect-exeext.sh
+++ b/t/parallel-tests-fd-redirect-exeext.sh
@@ -100,7 +100,7 @@ fi
 run_make -O -e IGNORE check
 cat baz.log
 cat qux.log
-test $am_make_rc_got -eq 0
+test $am_make_rc -eq 0
 grep "^ bazbazbaz$" stdout
 grep "^ quxquxqux$" stdout
 $EGREP '(bazbazbaz|quxquxqux)' *.log && exit 1
diff --git a/t/parallel-tests-fd-redirect.sh b/t/parallel-tests-fd-redirect.sh
index cab2701..bfdfdb8 100644
--- a/t/parallel-tests-fd-redirect.sh
+++ b/t/parallel-tests-fd-redirect.sh
@@ -54,7 +54,7 @@ chmod a+x foo.sh bar
 run_make -O -e IGNORE check
 cat foo.log
 cat bar.log
-test $am_make_rc_got -eq 0
+test $am_make_rc -eq 0
 grep "^ foofoofoo$" stdout
 grep "^ barbarbar$" stdout
 $EGREP '(foofoofoo|barbarbar)' *.log && exit 1
diff --git a/t/parallel-tests-fork-bomb.sh b/t/parallel-tests-fork-bomb.sh
index cc5c912..1784a7a 100644
--- a/t/parallel-tests-fork-bomb.sh
+++ b/t/parallel-tests-fork-bomb.sh
@@ -65,7 +65,7 @@ do_check ()
   $FGREP '::OOPS::' output && exit 1 # Possible infinite recursion.
   grep "[Cc]ircular.*dependency" output | $FGREP "$log"
   grep "$log:.*depends on itself" output
-  test $am_make_rc_got -gt 0
+  test $am_make_rc -gt 0
 }
 
 : > test-suite.test
diff --git a/t/parallel-tests-many.sh b/t/parallel-tests-many.sh
index 5389952..3ed6e7a 100644
--- a/t/parallel-tests-many.sh
+++ b/t/parallel-tests-many.sh
@@ -76,8 +76,7 @@ $AUTOCONF
 $AUTOMAKE -a
 ./configure
 
-$MAKE check > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O check
 
 grep "^# TOTAL: $whole_count$" stdout
 grep "^# PASS:  $whole_count$" stdout
@@ -118,31 +117,25 @@ check_three_reruns ()
 
 $sleep
 touch $tst-1.test $dir1-1/foo.sh $dir2-1/$tst-1
-$MAKE check AM_LAZY_CHECK=yes > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O check AM_LAZY_CHECK=yes
 check_three_reruns
 grep "^# TOTAL: $whole_count$" stdout
 grep "^# PASS:  $whole_count$" stdout
 
 # We need to simulate the failure of few tests.
-st=0
-$MAKE check TESTS="$tst-1.test $dir1-1/foo.sh $dir2-1/$tst-1" \
-            LOG_COMPILER=false > stdout && st=1
-cat stdout
-test $(grep -c '^FAIL:' stdout) -eq 3 || st=1
-test $st -eq 0 || fatal_ "couldn't simulate failure of 3 tests"
-unset st
-
-$MAKE recheck > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O -e FAIL check \
+         TESTS="$tst-1.test $dir1-1/foo.sh $dir2-1/$tst-1" \
+         LOG_COMPILER=false \
+  && test $(grep -c '^FAIL:' stdout) -eq 3 \
+  || fatal_ "couldn't simulate failure of 3 tests"
+
+run_make -O recheck
 check_three_reruns
 grep "^# TOTAL: 3$" stdout
 grep "^# PASS:  3$" stdout
 
 # We need to simulate the failure of a lot of tests.
-$MAKE check LOG_COMPILER=false > stdout && { cat stdout; exit 1; }
-cat stdout
-
+run_make -O -e FAIL check LOG_COMPILER=false
 grep '^PASS:' stdout && exit 1
 # A random sample.
 grep "^FAIL: $tst-363\.test$" stdout
@@ -153,9 +146,7 @@ grep "^FAIL: " stdout > grp
 sed 20q grp # For debugging.
 test $(wc -l <grp) -eq $whole_count
 
-$MAKE recheck > stdout || { cat stdout; exit 1; }
-cat stdout
-
+run_make -O recheck
 grep '^FAIL:' stdout && exit 1
 # A random sample.
 grep "^PASS: $tst-363\.test$" stdout
@@ -171,8 +162,7 @@ grep "^# PASS:  $whole_count$" stdout
 # "make clean" might ignore some failures (either on purpose or spuriously),
 # so we prefer to also grep its output to ensure that no "Argument list too
 # long" error was encountered.
-$MAKE clean >output 2>&1 || { cat output; exit 1; }
-cat output
+run_make -M clean
 grep -i 'list.* too long' output && exit 1
 list_logs | grep . && exit 1
 
diff --git a/t/parallel-tests-reset-term.sh b/t/parallel-tests-reset-term.sh
index 187a503..3dae4b6 100644
--- a/t/parallel-tests-reset-term.sh
+++ b/t/parallel-tests-reset-term.sh
@@ -45,7 +45,7 @@ mkcheck ()
   cat stdout
   cat foobar.log
   cat test-suite.log
-  return $am_make_rc_got
+  return $am_make_rc
 }
 
 $ACLOCAL
diff --git a/t/parallel-tests-unreadable.sh b/t/parallel-tests-unreadable.sh
index 898532d..0b67018 100644
--- a/t/parallel-tests-unreadable.sh
+++ b/t/parallel-tests-unreadable.sh
@@ -55,8 +55,7 @@ doit ()
   $MAKE check
   rm -f test-suite.log
   chmod a-r $*
-  $MAKE test-suite.log 2>stderr && { cat stderr >&2; exit 1; }
-  cat stderr >&2
+  run_make -E -e FAIL test-suite.log
 }
 
 could_not_read ()
diff --git a/t/silent-many-languages.sh b/t/silent-many-languages.sh
index 03be42f..ae8a5ab 100644
--- a/t/silent-many-languages.sh
+++ b/t/silent-many-languages.sh
@@ -88,12 +88,6 @@ AC_PROG_LEX
 AC_PROG_YACC
 AC_PROG_CXX
 
-# FIXME: remove this hack once the requirements c++, fortran and fortran77
-# are implemented correctly.
-test -n "`echo $CXX`" || AC_MSG_ERROR([C++ compiler not found], [77])
-test -n "`echo $FC`"  || AC_MSG_ERROR([Fortran compiler not found], [77])
-test -n "`echo $F77`" || AC_MSG_ERROR([Fortran 77 compiler not found], [77])
-
 # The SunStudio C++ compiler is unfortunately named 'sunCC' (or even just
 # 'CC', yuck!); similarly and the Portland group C++ compiler is named
 # 'pgCC'.  This can cause problems with our grepping checks on the output
diff --git a/t/spell.sh b/t/spell.sh
index a5f49ce..57159c3 100644
--- a/t/spell.sh
+++ b/t/spell.sh
@@ -38,8 +38,7 @@ $AUTOCONF
 $AUTOMAKE
 
 ./configure
-$MAKE 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL make
 
 LC_ALL=C sed -e 's|^Makefile:[0-9][0-9]*: ||' \
              -e 's|.*\.mk:[0-9][0-9]*: ||' \
diff --git a/t/spell2.sh b/t/spell2.sh
index b50c3d7..6e84218 100644
--- a/t/spell2.sh
+++ b/t/spell2.sh
@@ -38,8 +38,7 @@ $AUTOMAKE
 
 ./configure
 
-$MAKE 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL
 
 LC_ALL=C sed -e 's|^Makefile:[0-9][0-9]*: ||' \
              -e 's|.*\.mk:[0-9][0-9]*: ||' \
diff --git a/t/spy-pattern-rules.sh b/t/spy-pattern-rules.sh
index 507d584..fee25c3 100644
--- a/t/spy-pattern-rules.sh
+++ b/t/spy-pattern-rules.sh
@@ -85,7 +85,8 @@ test "$(cat barzap)" = .zap
 test "$(cat bar-mu)" = .-mu
 
 # Sanity check.
-$MAKE bax && exit 99
-$MAKE bax 2>&1 | grep '^bax: longest stem rule selected!' || exit 99
+run_make -e FAIL -M bax \
+  && grep '^bax: longest stem rule selected!' output \
+  || fatal_ 'the longest stem rule was not selected'
 
 :
diff --git a/t/spy-var-append.sh b/t/spy-var-append.sh
index 0d5482b..14b10cf 100644
--- a/t/spy-var-append.sh
+++ b/t/spy-var-append.sh
@@ -48,7 +48,7 @@ END
 
 checkit ()
 {
-  $MAKE "$@" 2>stderr && test ! -s stderr || { cat stderr >&2; exit 1; }
+  run_make -E -- "$@" && test ! -s stderr
 }
 
 checkit test1
diff --git a/t/stdinc-no-repeated.sh b/t/stdinc-no-repeated.sh
index 40b855d..c0df3a0 100644
--- a/t/stdinc-no-repeated.sh
+++ b/t/stdinc-no-repeated.sh
@@ -36,16 +36,14 @@ $AUTOMAKE --add-missing
 mkdir build
 cd build
 ../configure
-$MAKE V=1 > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O V=1
 grep '.*-I *\. .*-I *\.\. ' stdout
 grep '.*-I *\. .*-I *\. ' stdout && exit 1
 cd ..
 
 # Test with $builddir = $srcdir
 ./configure
-$MAKE V=1 > stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O V=1
 grep '.*-I *\.  ' stdout
 grep '.*-I *\..*-I *\.' stdout && exit 1
 
diff --git a/t/subobj-c.sh b/t/subobj-c.sh
index e0c2ad2..5d7b24a 100644
--- a/t/subobj-c.sh
+++ b/t/subobj-c.sh
@@ -74,7 +74,7 @@ $AUTOMAKE --add-missing 2>stderr || { cat stderr >&2; exit 1; 
}
 cat stderr >&2
 
 # Make sure compile is installed, and that Automake says so.
-grep '^configure\.ac:7:.*install.*compile' stderr
+grep '^configure\.ac:4:.*install.*compile' stderr
 test -f compile
 
 $EGREP '[^/](a|b|foo)\.\$(OBJEXT)' Makefile.in && exit 1
diff --git a/t/subobj-libtool.sh b/t/subobj-libtool.sh
index 2011d61..8afad6b 100644
--- a/t/subobj-libtool.sh
+++ b/t/subobj-libtool.sh
@@ -58,7 +58,7 @@ $ACLOCAL
 rm -f compile
 $AUTOMAKE --add-missing 2>stderr || { cat stderr >&2; exit 1; }
 cat stderr >&2
-grep '^configure\.ac:7:.*install.*compile' stderr
+grep '^configure\.ac:4:.*install.*compile' stderr
 test -f compile
 
 grep '[^/][123]\.lo' Makefile.in && exit 1
diff --git a/t/subobj10.sh b/t/subobj10.sh
index bc1af31..aab4e02 100644
--- a/t/subobj10.sh
+++ b/t/subobj10.sh
@@ -16,7 +16,7 @@
 
 # PR 492: Test asm subdir objects.
 
-required=gcc
+required='gcc -c-o'
 . test-init.sh
 
 cat >> configure.ac << 'END'
diff --git a/t/subpkg.sh b/t/subpkg.sh
index d7f117a..1333630 100644
--- a/t/subpkg.sh
+++ b/t/subpkg.sh
@@ -93,7 +93,7 @@ EOF
 cp "$am_scriptdir"/compile .
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Werror -Wall
 $AUTOMAKE -Wno-override
 
 cd lib
diff --git a/t/test-driver-acsubst.sh b/t/test-driver-acsubst.sh
index 5439617..0842d84 100644
--- a/t/test-driver-acsubst.sh
+++ b/t/test-driver-acsubst.sh
@@ -87,7 +87,7 @@ cat test-suite.log
 cat foo.log
 cat bar.log
 cat baz.log
-test $am_make_rc_got -eq 0
+test $am_make_rc -eq 0
 count_test_results total=3 pass=1 fail=0 skip=1 xfail=1 xpass=0 error=0
 
 :
diff --git a/t/test-driver-cond.sh b/t/test-driver-cond.sh
index 1160097..b9d46b0 100644
--- a/t/test-driver-cond.sh
+++ b/t/test-driver-cond.sh
@@ -100,7 +100,7 @@ cat test-suite.log
 cat foo.log
 cat bar.log
 cat baz.log
-test $am_make_rc_got -eq 0 || exit 1
+test $am_make_rc -eq 0 || exit 1
 do_count
 
 run_make -O distcheck
diff --git a/t/test-driver-custom-multitest-recheck2.sh 
b/t/test-driver-custom-multitest-recheck2.sh
index eee7a64..bc51292 100644
--- a/t/test-driver-custom-multitest-recheck2.sh
+++ b/t/test-driver-custom-multitest-recheck2.sh
@@ -93,8 +93,7 @@ for vpath in : false; do
   rm -f *.run
 
   : An empty '$(TESTS)' means that no test should be run.
-  run_make TESTS= recheck >stdout || { cat stdout; exit 1; }
-  cat stdout
+  run_make -O TESTS= recheck
   count_test_results total=0 pass=0 fail=0 xpass=0 xfail=0 skip=0 error=0
   test ! -e a.run
   test ! -e b.run
diff --git a/t/test-extensions-funny-chars.sh b/t/test-extensions-funny-chars.sh
index a3a06a2..33182cb 100644
--- a/t/test-extensions-funny-chars.sh
+++ b/t/test-extensions-funny-chars.sh
@@ -83,8 +83,7 @@ $AUTOMAKE -a
 
 ./configure
 
-st=0; $MAKE check >stdout || st=$?
-cat stdout
+run_make -e IGNORE -O check
 ls -l
 cat test-suite.log
 cat foo.log
@@ -94,7 +93,7 @@ grep '@K @K @K' baz.log
 cat bar.log
 cat zardoz.log
 grep 'Hello Zardoz' zardoz.log && exit 1
-test $st -eq 0 || exit 1
+test $am_make_rc -eq 0
 count_all
 
 $MAKE clean
@@ -104,9 +103,7 @@ test ! -f bar.log
 test ! -f baz.log
 test ! -f zardoz.log
 
-st=0
-$MAKE check TESTS=zardoz L!NU.X_LOG_COMPILER=/bin/sh >stdout || st=$?
-cat stdout
+run_make -e IGNORE -O check TESTS=zardoz L!NU.X_LOG_COMPILER=/bin/sh
 count_test_results total=1 pass=0 fail=0 skip=0 xfail=0 xpass=1 error=0
 cat test-suite.log
 test ! -f foo.log
@@ -114,19 +111,16 @@ test ! -f bar.log
 test ! -f baz.log
 cat zardoz.log
 grep 'Hello Zardoz' zardoz.log
-test $st -gt 0 || exit 1
+test $am_make_rc -gt 0
 
-$MAKE recheck >stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O recheck
 count_test_results total=1 pass=0 fail=0 skip=0 xfail=1 xpass=0 error=0
 grep '^XFAIL: zardoz.l!Nu\.x$' stdout
 
-$MAKE recheck >stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O recheck
 count_test_results total=0 pass=0 fail=0 skip=0 xfail=0 xpass=0 error=0
 
-$MAKE distcheck >stdout || { cat stdout; exit 1; }
-cat stdout
+run_make -O distcheck
 count_all
 
 :
diff --git a/t/test-extensions-invalid.sh b/t/test-extensions-invalid.sh
index fba3aff..1918d84 100644
--- a/t/test-extensions-invalid.sh
+++ b/t/test-extensions-invalid.sh
@@ -32,8 +32,7 @@ $AUTOMAKE -a
 
 ./configure
 
-$MAKE 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL
 for suf in mu x1 _ x2; do
   $FGREP "invalid test extension: '$suf'" stderr
 done
diff --git a/t/var-undef-append.sh b/t/var-undef-append.sh
index 179170c..6a13825 100644
--- a/t/var-undef-append.sh
+++ b/t/var-undef-append.sh
@@ -91,7 +91,7 @@ $AUTOCONF
 
 checkit ()
 {
-  $MAKE "$@" 2>stderr && test ! -s stderr || { cat stderr >&2; exit 1; }
+  run_make -E -- "$@" && test ! -s stderr
 }
 
 checkit test1
diff --git a/t/vartypos-deps.sh b/t/vartypos-deps.sh
index 7837866..a1c29e5 100644
--- a/t/vartypos-deps.sh
+++ b/t/vartypos-deps.sh
@@ -85,15 +85,13 @@ $MAKE
 (cd ok2 && $MAKE)
 
 cd ko1
-$MAKE 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL
 errgrep LOG
 errgrep TEST_LOG
 cd ..
 
 cd ko2
-$MAKE 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL
 errgrep SH_LOG
 errgrep CONFIG
 errgrep CONFIGSTATUS
diff --git a/t/vartypos-whitelist.sh b/t/vartypos-whitelist.sh
index ef0e359..d5ab941 100644
--- a/t/vartypos-whitelist.sh
+++ b/t/vartypos-whitelist.sh
@@ -105,14 +105,12 @@ $MAKE distcheck
 # If we remove the whitelisting, failure ensues.
 sed '/^AM_VARTYPOS_WHITELIST *=/d' <Makefile.am >t && mv -f t Makefile.am \
   || fatal_ "editing Makefile.am"
-$MAKE 2>stderr && { cat stderr; exit 1; }
-cat stderr >&2
+run_make -e FAIL -E
 grep "'copy_LDADD' is defined but no program" stderr
 grep "'remove_LDADD' is defined but no program" stderr
 
-$MAKE AM_VARTYPOS_WHITELIST=remove_LDADD AM_FORCE_SANITY_CHECK=yes \
-  2>stderr && { cat stderr; exit 1; }
-cat stderr >&2
+run_make -e FAIL -E \
+  AM_VARTYPOS_WHITELIST=remove_LDADD AM_FORCE_SANITY_CHECK=yes
 grep "'copy_LDADD' is defined but no program" stderr
 grep "remove_LDADD" stderr && exit 1
 
diff --git a/t/vartypos.sh b/t/vartypos.sh
index 6c22d64..2f0c5ad 100644
--- a/t/vartypos.sh
+++ b/t/vartypos.sh
@@ -86,8 +86,7 @@ $AUTOCONF
 $AUTOMAKE -a
 
 ./configure
-$MAKE nihil 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL nihil
 
 $FGREP 'as canonical' stderr \
   | $EGREP -v " '(foo|libfoo_a|libbar_la)' " && exit 1
@@ -107,8 +106,7 @@ $MAKE nihil
 $sleep
 echo none_SOURCES = >> Makefile.am
 
-$MAKE nihil 2>stderr && { cat stderr >&2; exit 1; }
-cat stderr >&2
+run_make -E -e FAIL nihil
 
 grep "variable 'none_SOURCES'" stderr
 grep "'none' as canonical name" stderr


hooks/post-receive
-- 
GNU Automake



reply via email to

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