automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, maint, updated. v1.13.2-196


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, maint, updated. v1.13.2-196-g3f19ee5
Date: Sun, 26 May 2013 12:21:10 +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=3f19ee5f2e2b7cef7f77893a280e2261bc5f711f

The branch, maint has been updated
       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  ac13ca500648395417e5d9bcf110475b42841bee (commit)

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

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

Summary of changes:
 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             |  200 +++++++++++++++----------------
 t/add-missing.tap                       |    6 +-
 t/am-prog-cc-c-o.sh                     |   65 ++++++++---
 t/ax/am-test-lib.sh                     |   37 +++---
 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/deleted-am.sh                         |    4 +-
 t/discover.sh                           |    2 +-
 t/distcheck-configure-flags.sh          |    1 -
 t/javaflags.sh                          |    4 -
 t/lflags.sh                             |    4 -
 t/lflags2.sh                            |    4 -
 t/link_cond.sh                          |    4 +-
 t/list-of-tests.mk                      |    3 +
 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-no-spurious-summary.sh |    2 +-
 t/parallel-tests-recheck-pr11791.sh     |    8 +-
 t/parallel-tests-reset-term.sh          |    2 +-
 t/subobj10.sh                           |    2 +-
 t/subpkg.sh                             |    2 +-
 t/tap-signal.tap                        |    2 +-
 t/test-driver-acsubst.sh                |    2 +-
 t/test-driver-cond.sh                   |    2 +-
 39 files changed, 445 insertions(+), 265 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 16790b2..61a011f 100644
--- a/NEWS
+++ b/NEWS
@@ -107,16 +107,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:
 
@@ -159,6 +168,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:
@@ -168,6 +186,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 4584d2b..3bd5c9f 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 11874e7..8df1890 100644
--- a/m4/Makefile.inc
+++ b/m4/Makefile.inc
@@ -41,12 +41,12 @@ dist_automake_ac_DATA = \
   %D%/lispdir.m4 \
   %D%/maintainer.m4 \
   %D%/make.m4 \
-  %D%/minuso.m4 \
   %D%/missing.m4 \
   %D%/mkdirp.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 a6f2733..432ff20 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])
 # -----------------------------------------------
@@ -110,12 +116,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
 dnl The testsuite driver may need to know about EXEEXT, so add the
 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
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 d29ce30..5d08750 100644
--- a/maintainer/syntax-checks.mk
+++ b/maintainer/syntax-checks.mk
@@ -56,8 +56,7 @@ sc_cd_relative_dir \
 sc_perl_at_uscore_in_scalar_context \
 sc_perl_local \
 sc_AMDEP_TRUE_in_automake_in \
-sc_tests_make_without_am_makeflags \
-$(sc_obsolete_requirements_rules) \
+sc_make_without_am_makeflags \
 sc_tests_no_source_defs \
 sc_tests_obsolete_variables \
 sc_tests_here_document_format \
@@ -65,7 +64,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_overriding_macros_on_cmdline \
 sc_tests_no_make_e \
 sc_tests_plain_sleep \
@@ -80,10 +78,34 @@ sc_unquoted_DESTDIR \
 sc_tabs_in_texi \
 sc_at_in_texi
 
-## These check avoids accidental configure substitutions in the source.
-## There are exactly 8 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)
+
+# Check that the list of tests given in the Makefile is equal to the
+# list of all test scripts in the Automake testsuite.
+maintainer-check: maintainer-check-list-of-tests
+
+# 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 8 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 = 8
 aclocal_diff_no = 9
 sc_diff_automake sc_diff_aclocal: in=$($*_in)
@@ -106,15 +128,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):' \
@@ -124,16 +146,16 @@ 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).
+# 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).
 sc_no_for_variable_in_macro:
        @if grep 'for .* in \$$(' $(ams) | grep -v '/Makefile\.am:'; then \
          echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
          exit 1; \
        else :; fi
 
-## Make sure all invocations of mkinstalldirs are correct.
+# Make sure all invocations of mkinstalldirs are correct.
 sc_mkinstalldirs:
        @if grep -n 'mkinstalldirs' $(ams) \
              | grep -F -v '$$(mkinstalldirs)' \
@@ -143,7 +165,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 \
@@ -151,7 +173,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 \
@@ -159,22 +181,22 @@ 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; \
          exit 1; \
        fi
 
-## Look for cd within backquotes
+# Look for cd within backquotes
 sc_cd_in_backquotes:
        @if grep -n '^[^#]*` *cd ' $(automake_in) $(ams); then \
          echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
          exit 1; \
        fi
 
-## Look for cd to a relative directory (may be influenced by CDPATH).
-## Skip some known directories that are OK.
+# Look for cd to a relative directory (may be influenced by CDPATH).
+# Skip some known directories that are OK.
 sc_cd_relative_dir:
        @if grep -n '^[^#]*cd ' $(automake_in) $(ams) | \
              grep -v 'echo.*cd ' | \
@@ -188,7 +210,7 @@ sc_cd_relative_dir:
          exit 1; \
        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,15 +227,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
 
-## Recursive make invocations should always pass $(AM_MAKEFLAGS)
-## to $(MAKE), for portability to non-GNU make.
+# Recursive make invocations should always pass $(AM_MAKEFLAGS)
+# to $(MAKE), for portability to non-GNU make.
 sc_tests_make_without_am_makeflags:
        @if grep '^[^#].*(MAKE) ' $(ams) $(automake_in) \
            | grep -Fv '$$(AM_MAKEFLAGS)'; \
@@ -222,7 +244,7 @@ sc_tests_make_without_am_makeflags:
          exit 1; \
        fi
 
-## Look out for some obsolete variables.
+# Look out for some obsolete variables.
 sc_tests_obsolete_variables:
        @vars=" \
          using_tap \
@@ -250,23 +272,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 \
@@ -295,20 +304,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 () { \
@@ -330,24 +339,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 \
@@ -357,22 +366,13 @@ 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
-
 # "make -e" is brittle and unsafe, since it let *all* the environment
 # win over the macro definitions in the Makefiles.  Since we offer
 # AM_MAKEFLAGS to allow the user to portably override macro definitions
@@ -384,13 +384,13 @@ sc_tests_no_make_e:
          exit 1; \
        fi
 
-## Overriding a Makefile macro on the command line is not portable when
-## recursive targets are used.  Better use an envvar.  SHELL is an
-## exception, POSIX says it can't come from the environment.  V, DESTDIR,
-## DISTCHECK_CONFIGURE_FLAGS and DISABLE_HARD_ERRORS are exceptions, too,
-## as package authors are urged not to initialize them anywhere.
-## Finally, 'exp' is used by some ad-hoc checks, where we ensure it's
-## ok to override it from the command line.
+# Overriding a Makefile macro on the command line is not portable when
+# recursive targets are used.  Better use an envvar.  SHELL is an
+# exception, POSIX says it can't come from the environment.  V, DESTDIR,
+# DISTCHECK_CONFIGURE_FLAGS and DISABLE_HARD_ERRORS are exceptions, too,
+# as package authors are urged not to initialize them anywhere.
+# Finally, 'exp' is used by some ad-hoc checks, where we ensure it's
+# ok to override it from the command line.
 sc_tests_overriding_macros_on_cmdline:
 # The first s/// tries to account for usages like "$MAKE || st=$?".
 # 'DISTCHECK_CONFIGURE_FLAGS' and 'exp' are allowed to contain whitespace in
@@ -416,9 +416,9 @@ sc_tests_overriding_macros_on_cmdline:
          exit 1; \
        fi >&2
 
-## 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 \
@@ -426,16 +426,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,' \
@@ -443,9 +443,9 @@ sc_m4_am_plain_egrep_fgrep:
          exit 1; \
        fi
 
-## Prefer 'configure.ac' over the obsolescent '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).
+# Prefer 'configure.ac' over the obsolescent '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).
 sc_tests_no_configure_in:
        @if grep -E '\bconfigure\\*\.in\b' $(xtests) $(xdefs) \
              | grep -Ev '/backcompat.*\.(sh|tap):' \
@@ -458,11 +458,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 RECHECK_LOGS=" 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 RECHECK_LOGS=" 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' \
@@ -471,15 +471,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
 
-## Ensure variables are listed before rules in Makefile.in files we generate.
+# Ensure variables are listed before rules in Makefile.in files we generate.
 sc_tests_makefile_variable_order: sc_ensure_testsuite_has_run
        @st=0; \
        for file in `find t -name Makefile.in -print`; do \
@@ -501,7 +501,7 @@ sc_tests_makefile_variable_order: 
sc_ensure_testsuite_has_run
          exit 1; \
        }
 
-## 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" \
@@ -509,8 +509,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; \
@@ -539,15 +539,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)
-
-## Check that the list of tests given in the Makefile is equal to the
-## list of all test scripts in the Automake testsuite.
-maintainer-check: maintainer-check-list-of-tests
-
-# I'm a lazy typist.
-lint: maintainer-check
-.PHONY: lint
diff --git a/t/add-missing.tap b/t/add-missing.tap
index 053b9a1..e0a628b 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/ax/am-test-lib.sh b/t/ax/am-test-lib.sh
index 53dd27e..91f8b45 100644
--- a/t/ax/am-test-lib.sh
+++ b/t/ax/am-test-lib.sh
@@ -43,18 +43,16 @@ unset __MKLVL__ MAKE_JOBS_FIFO                     # For 
BSD make.
 unset DMAKE_CHILD DMAKE_DEF_PRINTED DMAKE_MAX_JOBS # For Solaris dmake.
 # Unset verbosity flag.
 unset V
-# Also unset variables that will let "make -e install" divert
-# files into unwanted directories.
+# Also unset variables that might influence "make install".
 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
@@ -188,14 +186,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;;
@@ -269,9 +267,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
 
@@ -286,17 +284,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
 }
@@ -765,6 +763,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 1b37134..962a730 100644
--- a/t/ax/testsuite-summary-checks.sh
+++ b/t/ax/testsuite-summary-checks.sh
@@ -76,9 +76,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/deleted-am.sh b/t/deleted-am.sh
index 980a27a..837e10f 100644
--- a/t/deleted-am.sh
+++ b/t/deleted-am.sh
@@ -35,7 +35,7 @@ $AUTOMAKE
 $MAKE
 
 rm -f zardoz.am
-$sleep # Required to avoid racy failures with FreeBSD make.
+using_gmake || $sleep # Required by BSD make.
 run_make -e FAIL -M
 # This error will come from automake, not make, so we can be stricter
 # in our grepping of it.
@@ -48,7 +48,7 @@ $AUTOMAKE Makefile
 ./config.status Makefile
 $MAKE # Sanity check.
 rm -f foobar.am
-$sleep # Required to avoid racy failures with FreeBSD make.
+using_gmake || $sleep # Required by BSD make.
 run_make -e FAIL -M
 # 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/distcheck-configure-flags.sh b/t/distcheck-configure-flags.sh
index 3674e03..15adf47 100644
--- a/t/distcheck-configure-flags.sh
+++ b/t/distcheck-configure-flags.sh
@@ -40,7 +40,6 @@ $AUTOCONF
 # It should be ok to define DISTCHECK_CONFIGURE_FLAGS either on the
 # make command line or in the environment.
 
-# Not 'make -e' below, deliberately.
 env DISTCHECK_CONFIGURE_FLAGS='--enable-success sentence=it\ works\ :-\)' \
   $MAKE distcheck
 
diff --git a/t/javaflags.sh b/t/javaflags.sh
index ec405d6..2f434b2 100644
--- a/t/javaflags.sh
+++ b/t/javaflags.sh
@@ -24,10 +24,6 @@ echo "$*" > javaflags.list
 END
 chmod a+x fake-javac
 
-# Remove JAVAC from the environment, so that it won't interfere
-# with 'make -e' below.
-unset JAVAC
-
 cat >> configure.ac <<'END'
 AC_PROG_CC
 # Simulate presence of the java compiler using our fake-javac script.
diff --git a/t/lflags.sh b/t/lflags.sh
index ce6ccc8..a7a5927 100644
--- a/t/lflags.sh
+++ b/t/lflags.sh
@@ -29,10 +29,6 @@ echo 'extern int dummy;' >> lex.yy.c
 END
 chmod a+x fake-lex
 
-# Remove Lex from the environment, so that it won't interfere
-# with 'make -e' below.
-unset LEX
-
 cat >> configure.ac <<'END'
 AC_SUBST([CC], [false])
 # Simulate presence of Lex using our fake-lex script.
diff --git a/t/lflags2.sh b/t/lflags2.sh
index d21afad..bcc42c7 100644
--- a/t/lflags2.sh
+++ b/t/lflags2.sh
@@ -28,10 +28,6 @@ echo 'extern int dummy;' >> lex.yy.c
 END
 chmod a+x fake-lex
 
-# Remove Lex from the environment, so that it won't interfere
-# with 'make -e' below.
-unset LEX
-
 cat >> configure.ac <<'END'
 AC_SUBST([CXX], [false])
 # Simulate presence of Lex using our fake-lex script.
diff --git a/t/link_cond.sh b/t/link_cond.sh
index 98b523b..85be517 100644
--- a/t/link_cond.sh
+++ b/t/link_cond.sh
@@ -64,7 +64,7 @@ run_make CXX=false
 
 # Sanity check.
 rm -f foo foo.exe
-run_make CC=false && exit 99
+run_make CC=false && fatal_ '"make CC=false" succeeded unexpectedly'
 
 $MAKE distclean
 
@@ -83,6 +83,6 @@ run_make CC=false
 
 # Sanity check.
 rm -f foo foo.exe
-run_make CXX=false && exit 99
+run_make CXX=false && fatal_ '"make CXX=false" succeeded unexpectedly'
 
 :
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index ce3639c..7f77227 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -208,8 +208,11 @@ t/canon7.sh \
 t/canon8.sh \
 t/canon-name.sh \
 t/ccnoco.sh \
+t/ccnoco-lib.sh \
+t/ccnoco-lt.sh \
 t/ccnoco3.sh \
 t/ccnoco4.sh \
+t/ccnoco-deps.sh \
 t/check.sh \
 t/check2.sh \
 t/check4.sh \
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 4df28ad..0125219 100644
--- a/t/parallel-tests-extra-programs.sh
+++ b/t/parallel-tests-extra-programs.sh
@@ -118,7 +118,7 @@ $AUTOMAKE -a
 run_make -E -O -e IGNORE -- -k check
 ls -l
 if using_gmake; then
-  test $am_make_rc_got -gt 0 || exit 1
+  test $am_make_rc -gt 0 || exit 1
 else
   # Don't trust exit status of "make -k" for non-GNU make.
   $MAKE check && exit 1
@@ -157,7 +157,7 @@ echo 'int main (void) { return 0; }' > none.c
 
 run_make -O -e IGNORE check RECHECK_LOGS=
 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 e4d7caa..1dcdbd9 100644
--- a/t/parallel-tests-fd-redirect-exeext.sh
+++ b/t/parallel-tests-fd-redirect-exeext.sh
@@ -107,7 +107,7 @@ test $st -eq 0 || fatal_ "doesn't cover expected code paths"
 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 1ccaf74..cb331ca 100644
--- a/t/parallel-tests-fd-redirect.sh
+++ b/t/parallel-tests-fd-redirect.sh
@@ -60,7 +60,7 @@ test $st -eq 0 || fatal_ "doesn't cover expected code paths"
 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 1361bbd..62cd241 100644
--- a/t/parallel-tests-fork-bomb.sh
+++ b/t/parallel-tests-fork-bomb.sh
@@ -105,7 +105,7 @@ do_check ()
   test ! -e "$log"
   if using_gmake; then
     grep "[Cc]ircular.*dependency" output | $FGREP "$log"
-    test $am_make_rc_got -gt 0
+    test $am_make_rc -gt 0
   else
     # Look for possible error messages about circular dependencies from
     # either make or our own recipes.  At least one such a message must
diff --git a/t/parallel-tests-no-spurious-summary.sh 
b/t/parallel-tests-no-spurious-summary.sh
index 300d593..7c6398b 100644
--- a/t/parallel-tests-no-spurious-summary.sh
+++ b/t/parallel-tests-no-spurious-summary.sh
@@ -53,7 +53,7 @@ run_make -O -e IGNORE check
 cat test-suite.log
 cat foo.log
 cat bar.log
-test $am_make_rc_got -eq 0
+test $am_make_rc -eq 0
 
 grep '^:test-result:XFAIL$'  foo.log
 grep '^:test-result: SKIP$'  foo.log
diff --git a/t/parallel-tests-recheck-pr11791.sh 
b/t/parallel-tests-recheck-pr11791.sh
index cad1969..1933aa9 100644
--- a/t/parallel-tests-recheck-pr11791.sh
+++ b/t/parallel-tests-recheck-pr11791.sh
@@ -41,10 +41,10 @@ $AUTOMAKE -a
 run_make -O -e FAIL check
 count_test_results total=1 pass=0 fail=1 xpass=0 xfail=0 skip=0 error=0
 
-$sleep # Required to avoid a spurious failure with some FreeBSD makes.
+using_gmake || $sleep # Required by BSD make.
 run_make -O -e IGNORE -- -k recheck
 # Don't trust the exit status of "make -k" for non-GNU makes.
-! using_gmake || test $am_make_rc_got -gt 0 || exit 1
+! using_gmake || test $am_make_rc -gt 0 || exit 1
 count_test_results total=1 pass=0 fail=1 xpass=0 xfail=0 skip=0 error=0
 
 # Introduce an error in foo.c, that should cause a compilation failure.
@@ -59,10 +59,10 @@ $EGREP '(X?PASS|X?FAIL|SKIP|ERROR):' stdout && exit 1
 test -f foo.log
 test -f foo.trs
 
-$sleep # Required to avoid a spurious failure with some FreeBSD makes.
+using_gmake || $sleep # Required by BSD make.
 run_make -O -e IGNORE -- -k recheck
 # Don't trust the exit status of "make -k" for non-GNU makes.
-! using_gmake || test $am_make_rc_got -gt 0 || exit 1
+! using_gmake || test $am_make_rc -gt 0 || exit 1
 # We don't get a change to run the testsuite.
 $EGREP '(X?PASS|X?FAIL|SKIP|ERROR):' stdout && exit 1
 test -f foo.log
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/subobj10.sh b/t/subobj10.sh
index 1be42a9..f3181d1 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 f9cdc74..2b3d163 100644
--- a/t/subpkg.sh
+++ b/t/subpkg.sh
@@ -91,7 +91,7 @@ int lib (void)
 EOF
 
 $ACLOCAL
-$AUTOCONF
+$AUTOCONF -Werror -Wall
 $AUTOMAKE -Wno-override
 
 cd lib
diff --git a/t/tap-signal.tap b/t/tap-signal.tap
index 27e23ab..f1a8130 100644
--- a/t/tap-signal.tap
+++ b/t/tap-signal.tap
@@ -113,7 +113,7 @@ command_ok_ '"make check" fails' eval '
     # garbled output with NetBSD make, which would miss some final
     # newlines in the expected places and thus mess up our TAP output.
     set +x; echo
-    test $am_make_rc_got -gt 0
+    test $am_make_rc -gt 0
   )
 '
 cat stdout # For debugging.
diff --git a/t/test-driver-acsubst.sh b/t/test-driver-acsubst.sh
index 85113a4..a17ac57 100644
--- a/t/test-driver-acsubst.sh
+++ b/t/test-driver-acsubst.sh
@@ -80,7 +80,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 cf204c4..febb9d2 100644
--- a/t/test-driver-cond.sh
+++ b/t/test-driver-cond.sh
@@ -107,7 +107,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


hooks/post-receive
-- 
GNU Automake



reply via email to

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