Merge branch 'master' into next
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 28 Mar 2009 23:59:46 +0000 (00:59 +0100)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 28 Mar 2009 23:59:46 +0000 (00:59 +0100)
* master:
  Rewrite maintainer-check in separate tests, parallelizable.
  Fix maintainer-check failure.
  Fix latex warning in manual.
  Sync auxiliary files from upstream.
  manual: minor cleanups.
  Sane (un)install for empty directory variables.
  Ensure that empty directory variables work with empty content variables.
  Use --tag=FC with libtool also for .f90 files.
  DISTFILES containing a directory and files in that directory.
  Fix a documentation typo.
  Define AM_RECURSIVE_TARGETS, for gnulib's GNUmakefile.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
14 files changed:
1  2 
ChangeLog
Makefile.am
Makefile.in
NEWS
automake.in
doc/Makefile.in
doc/automake.texi
lib/Automake/Makefile.in
lib/Automake/tests/Makefile.in
lib/Makefile.in
lib/am/Makefile.in
m4/Makefile.in
tests/Makefile.am
tests/Makefile.in

diff --combined ChangeLog
+++ b/ChangeLog
+ 2009-03-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+       Rewrite maintainer-check in separate tests, parallelizable.
+       * Makefile.am (sc_diff_automake_in_automake, sc_perl_syntax)
+       (sc_no_brace_variable_expansions, sc_rm_minus_f)
+       (sc_no_for_variable_in_macro, sc_mkinstalldirs)
+       (sc_pre_normal_post_install_uninstall, sc_perl_no_undef)
+       (sc_perl_no_split_regex_space, sc_cd_in_backquotes)
+       (sc_cd_relative_dir, sc_perl_at_uscore_in_scalar_context)
+       (sc_perl_local_no_parens, sc_perl_local)
+       (sc_AMDEP_TRUE_in_automake_in, sc_tests_make_without_am_makeflags)
+       (sc_tests_plain_make, sc_tests_plain_autoconf)
+       (sc_tests_plain_autoupdate, sc_tests_plain_automake)
+       (sc_tests_here_document_format, sc_tests_Exit_not_exit)
+       (sc_tests_automake_fails, sc_tests_plain_aclocal)
+       (sc_tests_plain_perl, sc_tests_required_after_defs)
+       (sc_tests_overriding_macros_on_cmdline, sc_tests_plain_sleep)
+       (sc_tests_plain_egrep_fgrep, sc_mkdir_p, sc_perl_at_substs)
+       (sc_unquoted_DESTDIR, sc_tabs_in_texi, sc_at_in_texi): New rules,
+       all phony, all listed in ...
+       (syntax_check_rules): ... this new variable and split out from ...
+       (maintainer-check): ... this rule.  Depend on $(syntax_check_rules).
+       * Makefile.am (maintainer-check): Do not complain if DESTDIR is
+       passed as argument to `make'.
+       * doc/automake.texi (Cross-Compilation): Fix underfull hbox.
+       Sync auxiliary files from upstream.
+       * INSTALL, lib/INSTALL, lib/config.guess, lib/config.sub,
+       lib/texinfo.tex: Sync from upstream.
+ 2009-03-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+       manual: minor cleanups.
+       * doc/automake.texi (Yacc and Lex): Adjust spacing in example.
+       (Mixing Fortran 77 With C and C++): Drop unneeded @page breaks.
+       Sane (un)install for empty directory variables.
+       This patch fixes all install and uninstall rules to behave
+       sanely when $(wheredir) is the empty string, but $(where_HOW) is
+       nonempty, for all kinds of values of `where' and `HOW'.
+       * lib/am/data.am (install-%DIR%%PRIMARY%, uninstall-%DIR%%PRIMARY%):
+       Do not touch the install tree if the corresponding directory variable
+       $(%NDIR%dir) is empty.
+       * lib/am/java.am (install-%DIR%JAVA, uninstall-%DIR%JAVA): Likewise.
+       * lib/am/libs.am (install-%DIR%LIBRARIES, uninstall-%DIR%LIBRARIES):
+       Likewise.
+       * lib/am/lisp.am (install-%DIR%LISP, uninstall-%DIR%LISP): Likewise.
+       * lib/am/ltlib.am (install-%DIR%LTLIBRARIES, uninstall-%DIR%LTLIBRARIES):
+       Likewise.
+       * lib/am/mans.am (install-man%SECTION%, uninstall-man%SECTION%):
+       Likewise.
+       * lib/am/progs.am (install-%DIR%PROGRAMS, uninstall-%DIR%PROGRAMS):
+       Likewise.
+       * lib/am/python.am (install-%DIR%PYTHON, uninstall-%DIR%PYTHON):
+       Likewise.
+       * lib/am/scripts.am (install-%DIR%SCRIPTS, uninstall-%DIR%SCRIPTS):
+       Likewise.
+       * lib/am/texinfos.am (install-dvi-am, install-html-am, install-pdf-am)
+       (install-ps-am, uninstall-dvi-am, uninstall-html-am, uninstall-pdf-am)
+       (uninstall-ps-am): Likewise.
+       * tests/instdir2.test, tests/instdir-java.test,
+       tests/instdir-lisp.test, tests/instdir-ltlib.test,
+       tests/instdir-prog.test, tests/instdir-python.test,
+       tests/instdir-texi.test: New tests.
+       * tests/Makefile.am: Update.
+       * NEWS: Update.
+       Suggestion by Akim Demaille.
+       Ensure that empty directory variables work with empty content variables.
+       This test ensures that, if both $(wheredir) and $(where_HOW) are
+       the empty string, then the `install' and `uninstall' rules behave
+       sanely, for several directory variables `wheredir' and several
+       primaries `HOW'.
+       * tests/instdir.test: New test.
+       * tests/Makefile.am: Update.
+ 2009-03-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+       Use --tag=FC with libtool also for .f90 files.
+       * automake.in: Set 'libtool_tag' for language `fc'.
+       * tests/fort5.test: Grep for the tag.
+       * THANKS: Update.
+       Report by John R. Cary.
+ 2009-03-22  Peter Breitenlohner  <peb@mppmu.mpg.de>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+       For PR automake/533:
+       DISTFILES containing a directory and files in that directory.
+       When the source tree contains non-writable files or directories
+       (as happens during distcheck), and directories or entries
+       thereof are listed multiple times in variables to be
+       distributed, then the corresponding directories below $(distdir)
+       need to be made writable recursively.  Since file modes should
+       not change, they need to be copied recursively using `cp -f'.
+       * lib/am/distdir.am: Handle this situation.
+       * tests/distdir.test: Extend test to those cases.
+       * NEWS: Update.
+       Report by Peter Breitenlohner.
+ 2009-03-22  Jim Meyering  <meyering@redhat.com>
+       Fix a documentation typo.
+       * doc/automake.texi (Headers): Clarify the note telling when it's
+       better not to use noinst_HEADERS.
+ 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+       Define AM_RECURSIVE_TARGETS, for gnulib's GNUmakefile.
+       This new macro lists all public targets which invoke `make'
+       recursively, or depend on targets which do so.  It allows to
+       prevent parallelism selectively, when multiple targets are
+       passed on the `make' command line.
+       * lib/am/distdir.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS): New
+       macro.
+       * lib/am/subdirs.am (AM_RECURSIVE_TARGETS): Likewise.
+       * lib/am/tags.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS):
+       Likewise.
 +2009-03-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Fix LAZY_TEST_SUITE handling and $(TEST_SUITE_LOG) recreation.
 +      * lib/am/check.am (check-TESTS): Expand `$(TEST_LOGS)' only once
 +      in the rule command, for systems with low command line limits.
 +      Remove $(TEST_SUITE_LOG) even in LAZY_TEST_SUITE mode.
 +      ($(TEST_SUITE_LOG)): Always recreate $(TEST_SUITE_LOG).  Mention
 +      lazy mode in the summary output.
 +      * tests/parallel-tests.test: Test LAZY_TEST_SUITE semantics.
 +
 +2009-03-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Fix parallel-tests with empty $(TESTS) for BSD make.
 +      * lib/am/check.am [PARALLEL_TESTS] ($(TEST_SUITE_LOG)): Ignore
 +      empty line stemming from empty $(TEST_LOGS), to avoid counting
 +      zero tests as one.
 +      (check-TESTS): If `$(TESTS)' is empty, override TEST_LOGS to be
 +      empty, rather than `.log', for BSD make.
 +      * tests/parallel-tests6.test: New test.
 +      * tests/Makefile.am: Update.
 +
 +      Mark check-html and check-TESTS as recursive for BSD make.
 +      * lib/am/check.am [PARALLEL_TESTS] (.MAKE): Add check-TESTS
 +      and check-html prerequisites.
 +
 +      Match XFAIL_TESTS correctly with Solaris make.
 +      * lib/am/check.am [PARALLEL_TESTS]: VPATH rewriting may have
 +      changed test names, so srcdir needs to be taken into account
 +      explicitly when checking against the list of tests expected
 +      to fail.  Fixes spurious FAILures from XFAIL_TESTS.
 +
 +      Use append mode to capture parallel test output.
 +      * tests/lisp8.test: Use append mode for output from `make -j',
 +      to avoid dropped lines.
 +      * tests/parallel-tests3.test: Likewise.
 +
 +      parallel-tests: Fix summary output.
 +      * lib/am/check.am (am__text_box): Fix unportable sed script,
 +      replacing `\n' in the right hand side of an `s' command with
 +      a literal newline.  Kudos to Bruno Haible for the newline idea.
 +      * tests/parallel-tests.test: Update test to expose this.
 +
 +2009-03-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Overhaul of tests/README.
 +      * tests/README: General overhaul.  Mention parallel test suite
 +      execution, the test-suite.log file; document `Exit' vs. `exit',
 +      `defs' vs. `defs-p', the naming of `parallel-tests' tests.
 +      * README: Simplify, point to tests/README.
 +
 +      Documentation for the parallel-tests driver.
 +      * doc/automake.texi (Tests, Options): Document the `parallel-tests'
 +      option, including new features of the test driver.
 +      * NEWS: Update.
 +
 +      New tests for `parallel-tests'.
 +      * tests/parallel-tests.test: New file, to expose a bunch of
 +      features of `parallel-tests': VERBOSE, clean, TEST_SUITE_LOG,
 +      test dependencies, DISABLE_HARD_ERRORS.
 +      * tests/parallel-tests2.test: New file, test check-html.
 +      * tests/parallel-tests3.test: New file, test concurrency.
 +      * tests/parallel-tests4.test: New file, test suffix rules.
 +      * tests/parallel-tests5.test: New file, demonstrate compile/test
 +      concurrency.
 +      * tests/defs.in: Add a `required' check for rst2html.
 +      * tests/Makefile.am: Update.
 +
 +      parallel-tests: Ensure backward-compatible semantics.
 +      For each test in Automake's test suite that uses TESTS, generate
 +      an identical one that uses the `parallel-tests' option, for
 +      coverage of backward-compatible functionality.
 +      * tests/gen-parallel-tests: New file, generates distributed
 +      Makefile.am snippet tests/parallel-tests.am to list all tests
 +      that use the TESTS interface but not yet the `parallel-tests'
 +      option, with names mangled to use suffix `-p.test', in ...
 +      (parallel_tests): ... this new make macro.
 +      * tests/Makefile.am ($(srcdir)/parallel-tests.am)
 +      ($(parallel_tests), defs-p): New rules.
 +      (TESTS): Add check11.test and $(parallel_tests).
 +      (check_SCRIPTS): Add defs-p, $(parallel_tests).
 +      (check-clean-local): Remove `defs-p'.
 +      (EXTRA_DIST): Distribute gen-parallel-tests.
 +      (MAINTAINERCLEANFILES): New variable, remove $(parallel_tests).
 +      * bootstrap: Generate parallel-tests.am.
 +      * tests/check8.test: Check for circular dependencies in rules.
 +      * tests/check11.test: New test, check that SKIPs are not counted
 +      as passed tests.
 +      * tests/defs.in: Unset DISABLE_HARD_ERRORS, LAZY_TEST_SUITE,
 +      VERBOSE, so the tests are not influenced by the way our test
 +      suite is invoked.
 +
 +2009-03-08  Akim Demaille  <akim@lrde.epita.fr>
 +          Jim Meyering  <jim@meyering.net>
 +          Benoit Sigoure  <tsuna@lrde.epita.fr>
 +          Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Parallel test execution: new option `parallel-tests'.
 +      * automake.in (handle_tests): Set new conditional PARALLEL_TESTS
 +      when reading check.am.  Handle option `parallel-tests' and all
 +      its new semantics.  Define macros TEST_SUFFIXES, TEST_SUITE_LOG,
 +      TEST_SUITE_HTML, TEST_LOGS, TEST_LOGS_TMP, suffix rules if
 +      applicable, and per-target rules for other tests.  Add all log
 +      files to %clean_files at the `MOSTLY_CLEAN' level.
 +      * lib/Automake/Options.pm (_process_option_list): Accept
 +      `parallel-tests'.
 +      * lib/am/check.am [!PARALLEL_TESTS] (check-TESTS): Move existing
 +      testsuite driver under this new conditional.
 +      [PARALLEL_TESTS]
 +      (am__rst_title, am__rst_section, am__text_box am__sh_e_setup)
 +      (am__check_pre, am__check_post): New internal macros.
 +      ($(TEST_SUITE_LOG), check-TESTS, .log.html, check-html): New
 +      rules.
 +      * lib/am/check2.am: New file.
 +      * lib/am/Makefile.am (dist_am_DATA): Add check2.am.
 +      * tests/Makefile.am (AUTOMAKE_OPTIONS): Use `parallel-tests'.
 +      (clean-local): Renamed from distclean-local.
 +      * tests/defs.in: Drop VERBOSE handling, not needed here any more.
 +
 +2009-03-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Rename `silent' mode to `silent-rules' mode.
 +      * automake.in (define_verbose_var, verbose_flag)
 +      (define_verbose_tagvar, handle_options, handle_languages)
 +      (handle_configure, parse_arguments): Rename the `silent' option
 +      to `silent-rules', so it coincides with the `--silent-rules'
 +      command line option; adjust all code and comments.
 +      * lib/Automake/Options.pm (_process_option_list): Likewise.
 +      * doc/automake.texi (Invoking Automake, Libtool Flags, Options):
 +      Likewise.
 +      * NEWS: Adjust.
 +      * tests/dollarvar.test, tests/silent.test, tests/silent2.test,
 +      tests/silent3.test, tests/silent4.test, tests/silent5.test,
 +      tests/silent6.test, tests/silent7.test: Likewise.
 +      Suggestion by Jan Engelhardt.
 +
 +2009-03-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      `silent' mode unconditionally overrides portability-recursive.
 +      * automake.in (parse_arguments): Don't handle a global `silent'
 +      option here; instead, ...
 +      (handle_options): ... handle the "normal" `silent' option here.
 +      Override `portability-recursive' here, at the last point we deal
 +      with options, instead ...
 +      * lib/Automake/Options.pm (_process_option_list): ... of here.
 +      * tests/silent6.test: Replace unportable make snippet, remove
 +      FIXME note, add more test cases of options passed in the various
 +      locations.
 +
 +      Drop extra line from compile rules when `silent' is not used.
 +      * lib/am/depend2.am [!%FASTDEP%]: Only use the `%VERBOSE%
 +      @AM_BACKSLASH@' extra line if ?VERBOSE?.
 +      Report by Ralf Corsepius.
 +
 +2009-03-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Keep `--silent-rules' across triggered automake reruns.
 +      * automake.in (usage): Reformat to be a bit clearer.
 +      (handle_configure): Remove substitutions %STRICTNESS% and
 +      %USE-DEPS% in favor of a new substitution %AUTOMAKE-OPTIONS%
 +      that carries over all needed flags.
 +      * lib/am/configure.am (%MAKEFILE-IN%): Adjust rule.
 +      * tests/flavor.test: New test, to ensure --$flavor (gnu,
 +      gnits, foreign, cygnus), --ignore-deps, and --silent-rules are
 +      preserved across automake reruns.
 +      * tests/Makefile.am: Update.
 +
 +2009-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Provide variables for silencing of user rules.
 +      * automake.in (handle_languages): Always define `AM_V_GEN' and
 +      `AM_V_at'.
 +      * doc/automake.texi (Options): Document these flags.
 +      * tests/silent7.test: New test.
 +      * tests/Makefile.am: Update.
 +
 +      Redo variable naming for `silent' machinery.
 +      The public variables are named `AM_V_' plus the compiler
 +      short-hand now, e.g.: AM_V_CC, AM_V_CXXLD, AM_V_GEN.  The
 +      dispatch variables are internal details and begin with
 +      `am__v_'.
 +      * automake.in (verbose_var): Update comment.
 +      (verbose_private_var): New function.  Order functions so that
 +      ones not needed outside this section are listed first.
 +      (verbose_dispatch): Remove, no need to factor this.
 +      (define_verbose_var, define_verbose_libtool): Use
 +      verbose_private_var.
 +      (define_verbose_tagvar): Likewise; and simplify.
 +      Report by Jan Engelhardt.
 +
 +      Let -Wportability turn on/off the portability-recursive channel.
 +      * lib/Automake/ChannelDefs.pm (switch_warning): switch
 +      `portability-recursive' channel as well if changing the
 +      `portability' channel.
 +      * tests/dollarvar2.test: New test.
 +      * tests/Makefile.am: Update.
 +
 +2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      New automake command line option `--silent-rules'.
 +      * automake.in (parse_arguments): Accept `--silent-rules; let it
 +      override command line warning settings.
 +      (usage): Document it.
 +      * doc/automake.texi (Invoking Automake): Document it.
 +      * NEWS: Update.
 +      * tests/dollarvar.test: Also test `--silent-rules'.
 +      * tests/pr300-ltlib.test: Use `$MAKE V=1' to enable verbose
 +      output, which is matched later in the test.
 +      * tests/silent6.test: New test.
 +      * tests/Makefile.am: Update.
 +
 +      Documentation and tests for the `silent' option.
 +      * NEWS: Update.
 +      * doc/automake.texi (Invoking Automake): `silent' turns off some
 +      portability warnings.
 +      (Libtool Flags): `silent' silences libtool.
 +      (Options): Document the `silent' flag.
 +      * tests/dollarvar.test, tests/silent.test, tests/silent2.test,
 +      tests/silent3.test, tests/silent4.test, tests/silent5.test: New
 +      tests.
 +      * tests/Makefile.am: Update.
 +      * Makefile.am (maintainer-check): Ignore `DESTDIR' and `V' when
 +      checking for make variables that should not be overridden from
 +      the command line.
 +
 +2009-03-07  Jan Engelhardt  <jengelh@medozas.de>
 +          Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      Implement `silent' build rules.
 +      * automake.in (ccer): New field in the language structure.
 +      Initialize it for all registered languages.
 +      (verbose_var, verbose_flag, verbose_dispatch)
 +      (silent_flag, define_verbose_var, define_verbose_tagvar)
 +      (define_verbose_libtool): New functions.
 +      (handle_languages, handle_programs, handle_libraries)
 +      (handle_ltlibraries, handle_configure)
 +      (define_compiler_variable, define_linker_variable)
 +      (define_per_target_linker_variable): Use them where appropriate
 +      to define variables to implement the silent output machinery.
 +      * lib/Automake/Options.pm (_process_option_list): Accept
 +      `silent', turning off `portability-recursive'.
 +      * lib/am/depend2.am: Add %VERBOSE% and %SILENT% prefixes where
 +      appropriate.
 +      * lib/am/lex.am: Likewise.
 +      * lib/am/library.am: Likewise.
 +      * lib/am/ltlibrary.am: Likewise.
 +      * lib/am/program.am: Likewise.
 +      * lib/am/yacc.am: Likewise.
 +      * m4/init.m4 (AM_INIT_AUTOMAKE): Substitute, but do not define,
 +      AM_BACKSLASH.
 +      * tests/defs.in: Unset `V', to avoid influencing inner tests.
 +
 +2009-03-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 +
 +      New channel `portability-recursive'.
 +      Add new channel for portability warnings about recursive make
 +      variable expansions `$(var1$(var2))'.  Enable it alongside
 +      `-Wportability'.
 +      * lib/Automake/ChannelDefs.pm (Automake::ChannelDefs): Register
 +      channel `portability-recursive'.
 +      * lib/Automake/Variable.pm (_VARIABLE_CHARACTERS)
 +      (_VARIABLE_RECURSIVE_PATTERN): New variables.
 +      (check_variable_expansions): Diagnose recursive variable
 +      expansions through the new channel.
 +
  2009-03-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
        * NEWS: Update.
diff --combined Makefile.am
@@@ -3,7 -3,7 +3,7 @@@
  ## Makefile for Automake.
  
  ## Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004,
 -## 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 +## 2005, 2006, 2007, 2008, 2009  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
@@@ -106,70 -106,130 +106,130 @@@ dist-hook
  
  # Some simple checks, and then ordinary check.  These are only really
  # guaranteed to work on my machine.
- maintainer-check: automake aclocal
+ syntax_check_rules = \
+ sc_diff_automake_in_automake \
+ sc_perl_syntax \
+ sc_no_brace_variable_expansions \
+ sc_rm_minus_f \
+ sc_no_for_variable_in_macro \
+ sc_mkinstalldirs \
+ sc_pre_normal_post_install_uninstall \
+ sc_perl_no_undef \
+ sc_perl_no_split_regex_space \
+ sc_cd_in_backquotes \
+ sc_cd_relative_dir \
+ sc_perl_at_uscore_in_scalar_context \
+ sc_perl_local_no_parens \
+ sc_perl_local \
+ sc_AMDEP_TRUE_in_automake_in \
+ sc_tests_make_without_am_makeflags \
+ sc_tests_plain_make \
+ sc_tests_plain_autoconf \
+ sc_tests_plain_autoupdate \
+ sc_tests_plain_automake \
+ sc_tests_here_document_format \
+ sc_tests_Exit_not_exit \
+ sc_tests_automake_fails \
+ sc_tests_plain_aclocal \
+ sc_tests_plain_perl \
+ sc_tests_required_after_defs \
+ sc_tests_overriding_macros_on_cmdline \
+ sc_tests_plain_sleep \
+ sc_tests_plain_egrep_fgrep \
+ sc_mkdir_p \
+ sc_perl_at_substs \
+ sc_unquoted_DESTDIR \
+ sc_tabs_in_texi \
+ sc_at_in_texi
+ .PHONY: $(syntax_check_rules)
+ $(syntax_check_rules): automake aclocal
+ maintainer-check: $(syntax_check_rules)
  ## This check avoids accidental configure substitutions in the source.
  ## There are exactly 6 lines that should be modified.  This works out
  ## to 22 lines of diffs.
+ sc_diff_automake_in_automake:
        @if test `diff $(srcdir)/automake.in automake | wc -l` -ne 22; then \
          echo "found too many diffs between automake.in and automake"; 1>&2; \
          diff -c $(srcdir)/automake.in automake; \
          exit 1; \
        fi
  ## Syntax check with default Perl (on my machine, Perl 5).
+ sc_perl_syntax:
        perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w automake
        perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w aclocal
  ## expect no instances of '${...}'.  However, $${...} is ok, since that
  ## is a shell construct, not a Makefile construct.
+ sc_no_brace_variable_expansions:
        @if grep -F '$${' $(srcdir)/lib/am/[a-z]*.am | \
               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'.
+ sc_rm_minus_f:
        @if grep -v '^#' $(srcdir)/lib/am/[a-z]*.am $(srcdir)/tests/*.test | \
            grep -E '\<rm ([^-]|\-[^f ]*\>)'; then \
          echo "Suspicious 'rm' invocation." 1>&2; \
          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).
+ sc_no_for_variable_in_macro:
        @if grep 'for .* in \$$(' $(srcdir)/lib/am/[a-z]*.am; then \
          echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
          exit 1; \
        else :; fi
  ## Make sure all invocations of mkinstalldirs are correct.
+ sc_mkinstalldirs:
        @if grep -n 'mkinstalldirs' $(srcdir)/lib/am/[a-z]*.am | \
              grep -F -v '$$(mkinstalldirs)'; then \
          echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \
          exit 1; \
        else :; fi
  ## 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\)' \
                   $(srcdir)/lib/am/[a-z]*.am | \
              grep -v ':##' | grep -v ':        @\$$('; then \
          echo "Found incorrect use of PRE/NORMAL/POST_INSTALL/UNINSTALL in the lines above" 1>&2; \
          exit 1; \
        else :; fi
  ## We never want to use "undef", only "delete", but for $/.
+ sc_perl_no_undef:
        @if grep -n -w 'undef ' $(srcdir)/automake.in | \
              grep -F -v 'undef $$/'; then \
          echo "Found undef in automake.in; use delete instead" 1>&2; \
          exit 1; \
        fi
  ## We never want split (/ /,...), only split (' ', ...).
+ sc_perl_no_split_regex_space:
        @if grep -n 'split (/ /' $(srcdir)/automake.in; then \
          echo "Found bad split in the lines above." 1>&2; \
          exit 1; \
        fi
  ## Look for cd within backquotes
+ sc_cd_in_backquotes:
        @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am; 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.
+ sc_cd_relative_dir:
        @if grep -n '^[^#]*cd ' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am | \
              grep -v 'echo.*cd ' | \
          echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
          exit 1; \
        fi
  ## Using @_ in a scalar context is most probably a programming error.
+ sc_perl_at_uscore_in_scalar_context:
        @if grep -Hn '[^@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' $(srcdir)/automake.in; then \
          echo "Using @_ in a scalar context in the lines above." 1>&2; \
          exit 1; \
        fi
  ## Forbid using parens with `local' to ease counting.
+ sc_perl_local_no_parens:
        @if grep '^[ \t]*local *(' $(srcdir)/automake.in; then \
          echo "Don't use \`local' with parens: use several \`local' above." >&2; \
          exit 1; \
        fi
  ## Allow only `local $_' in Automake.
+ sc_perl_local:
        @if grep -v '^[ \t]*local \$$_;' $(srcdir)/automake.in | \
                grep '^[ \t]*local [^*]'; then \
          echo "Please avoid \`local'." 1>&2; \
          exit 1; \
        fi
  ## Don't let AMDEP_TRUE substitution appear in automake.in.
+ sc_AMDEP_TRUE_in_automake_in:
        @if grep '@AMDEP''_TRUE@' $(srcdir)/automake.in; then \
          echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
          exit 1; \
        fi
  ## Tests should never call make directly.
+ sc_tests_make_without_am_makeflags:
        @if grep '^[^#].*(MAKE) ' $(srcdir)/lib/am/*.am $(srcdir)/automake.in |\
                grep -v 'AM_MAKEFLAGS'; then \
          echo 'Use $$(MAKE) $$(AM_MAKEFLAGS).' 1>&2; \
          exit 1; \
        fi
  ## Tests should never call make directly.
+ sc_tests_plain_make:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*make'; then \
          echo 'Do not run "make" in the above tests.  Use "$$MAKE" instead.' 1>&2; \
          exit 1; \
        fi
  ## Tests should never call autoconf directly.
+ sc_tests_plain_autoconf:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*autoconf'; then \
          echo 'Do not run "autoconf" in the above tests.  Use "$$AUTOCONF" instead.' 1>&2; \
          exit 1; \
        fi
  ## Tests should never call autoupdate directly.
+ sc_tests_plain_autoupdate:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*autoupdate'; then \
          echo 'Do not run "autoupdate" in the above tests.  Use "$$AUTOUPDATE" instead.' 1>&2; \
          exit 1; \
        fi
  ## Tests should never call automake directly.
+ sc_tests_plain_automake:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep -E ':[   ]*automake([^:]|$$)'; then \
          echo 'Do not run "automake" in the above tests.  Use "$$AUTOMAKE" instead.' 1>&2;  \
          exit 1; \
        fi
  ## Tests should only use END and EOF for here documents
  ## (so that the next test is effective).
+ sc_tests_here_document_format:
        @if grep '<<' $(srcdir)/tests/*.test | grep -v 'END' | grep -v 'EOF'; then \
          echo 'Use here documents with "END" and "EOF" only, for greppability.' 1>&2; \
          exit 1; \
        fi
  ## Tests should never call exit directly, but use Exit.
  ## This is so that the exit status is transported correctly across the 0 trap.
  ## Ignore comments, and ignore one perl line in ext2.test.
+ sc_tests_Exit_not_exit:
        @found=false; for file in $(srcdir)/tests/*.test; do \
          res=`sed -n '/^#/d; /^\$$PERL/d; /<<.*END/,/^END/{b;}; /<<.*EOF/,/^EOF/{b;}; /exit [$$0-9]/p' $$file`; \
          if test -n "$$res"; then \
          echo 'Do not call plain "exit", use "Exit" instead, in above tests.' 1>&2; \
          exit 1; \
        fi
  ## Use AUTOMAKE_fails when appropriate
+ sc_tests_automake_fails:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep '\$$AUTOMAKE.*&&.*[eE]xit'; then \
          echo 'Use AUTOMAKE_fails + grep to catch automake failures in the above tests.' 1>&2;  \
          exit 1; \
        fi
  ## Tests should never call aclocal directly.
+ sc_tests_plain_aclocal:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*aclocal'; then \
          echo 'Do not run "aclocal" in the above tests.  Use "$$ACLOCAL" instead.' 1>&2;  \
          exit 1; \
        fi
  ## Tests should never call perl directly.
+ sc_tests_plain_perl:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*perl'; then \
          echo 'Do not run "perl" in the above tests.  Use "$$PERL" instead.' 1>&2; \
          exit 1; \
        fi
  ## Setting `required' after sourcing `./defs' is a bug.
+ sc_tests_required_after_defs:
        @for file in $(srcdir)/tests/*.test; do \
          if out=`sed -n '/defs/,$${/required=/p;}' $$file`; test -n "$$out"; then \
            echo 'Do not set "required" after sourcing "defs" in '"$$file: $$out" 1>&2; \
            exit 1; \
          fi; \
        done
  ## 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.  DESTDIRS is an exception,
 -## too, as package authors are urged not to intitialize this anywhere.
 +## POSIX says it can't come from the environment.  V and DESTDIRS are exceptions,
- ## too, as package authors are urged not to intitialize this anywhere.
++## too, as package authors are urged not to initialize them anywhere.
+ sc_tests_overriding_macros_on_cmdline:
        @if grep -E '\$$MAKE .*(SHELL=.*=|=.*SHELL=)' $(srcdir)/tests/*.test; then \
          echo 'Rewrite "$$MAKE foo=bar SHELL=$$SHELL" as "foo=bar $$MAKE -e SHELL=$$SHELL"' 1>&2; \
          echo ' in the above lines, it is more portable.' 1>&2; \
          exit 1; \
        fi
 -      @if sed 's/DESTDIR=[^ ]*//; s/SHELL=[^ ]*//' $(srcdir)/tests/*.test | \
 -        grep '\$$MAKE .*=' ; then \
 +      @if sed 's/DESTDIR=[^ ]*//; s/SHELL=[^ ]*//; s/V=[^ ]*//' $(srcdir)/tests/*.test | \
 +          grep '\$$MAKE .*=' ; then \
          echo 'Rewrite "$$MAKE foo=bar" as "foo=bar $$MAKE -e" in the above lines,' 1>&2; \
          echo 'it is more portable.' 1>&2; \
          exit 1; \
          echo 'the above lines.' 1>&2; \
          exit 1; \
        fi
  ## Never use `sleep 1' to create files with different timestamps.
  ## Use `$sleep' instead.  Some filesystems (e.g., Windows') have only
  ## a 2sec resolution.
+ sc_tests_plain_sleep:
        @if grep -E '\bsleep +[12345]\b' $(srcdir)/tests/*.test; 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.
+ sc_tests_plain_egrep_fgrep:
        @if grep -E '\b[ef]grep\b' $(srcdir)/tests/*.test ; then \
          echo 'Do not use egrep or fgrep in test cases.  Use $$FGREP or $$EGREP.' 1>&2; \
          exit 1; \
          echo 'Do not use egrep or fgrep in the above files, they are not portable.' 1>&2; \
          exit 1; \
        fi
+ sc_mkdir_p:
        @if grep 'mkdir_p' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am $(srcdir)/tests/*.test; then \
          echo 'Do not use mkdir_p in the above files, use MKDIR_P.' 1>&2; \
          exit 1; \
        fi
  ## Try to make sure all @...@ substitutions are covered by our
  ## substitution rule.
+ sc_perl_at_substs:
        @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' aclocal | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in aclocal" 1>&2; \
          exit 1; \
        @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' automake | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in automake" 1>&2; \
          exit 1; \
-       fi; \
-       if grep -E "[^\'\"]\\\$$\(DESTDIR" $(srcdir)/lib/am/*.am; then \
+       fi
+ sc_unquoted_DESTDIR:
+       @if grep -E "[^\'\"]\\\$$\(DESTDIR" $(srcdir)/lib/am/*.am; then \
          echo 'Suspicious unquoted DESTDIR uses.' 1>&2 ; \
          exit 1; \
        fi
+ sc_tabs_in_texi:
        @if grep '      ' $(srcdir)/doc/automake.texi; then \
          echo 'Do not use tabs in the manual.' 1>&2; \
          exit 1; \
        fi
+ sc_at_in_texi:
        @if grep -E '([^@]|^)@([         ][^@]|$$)' $(srcdir)/doc/automake.texi; \
        then \
          echo 'Unescaped @.' 1>&2; \
diff --combined Makefile.in
@@@ -87,6 -87,9 +87,9 @@@ RECURSIVE_TARGETS = all-recursive check
        ps-recursive uninstall-recursive
  RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive       \
    distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
  ETAGS = etags
  CTAGS = ctags
  DIST_SUBDIRS = $(SUBDIRS)
@@@ -240,6 -243,45 +243,45 @@@ do_subst = sed 
    -e 's,[@]configure_input[@],Generated from $@.in; do not edit by hand.,g' \
    -e 's,[@]datadir[@],$(datadir),g'
  
+ # Some simple checks, and then ordinary check.  These are only really
+ # guaranteed to work on my machine.
+ syntax_check_rules = \
+ sc_diff_automake_in_automake \
+ sc_perl_syntax \
+ sc_no_brace_variable_expansions \
+ sc_rm_minus_f \
+ sc_no_for_variable_in_macro \
+ sc_mkinstalldirs \
+ sc_pre_normal_post_install_uninstall \
+ sc_perl_no_undef \
+ sc_perl_no_split_regex_space \
+ sc_cd_in_backquotes \
+ sc_cd_relative_dir \
+ sc_perl_at_uscore_in_scalar_context \
+ sc_perl_local_no_parens \
+ sc_perl_local \
+ sc_AMDEP_TRUE_in_automake_in \
+ sc_tests_make_without_am_makeflags \
+ sc_tests_plain_make \
+ sc_tests_plain_autoconf \
+ sc_tests_plain_autoupdate \
+ sc_tests_plain_automake \
+ sc_tests_here_document_format \
+ sc_tests_Exit_not_exit \
+ sc_tests_automake_fails \
+ sc_tests_plain_aclocal \
+ sc_tests_plain_perl \
+ sc_tests_required_after_defs \
+ sc_tests_overriding_macros_on_cmdline \
+ sc_tests_plain_sleep \
+ sc_tests_plain_egrep_fgrep \
+ sc_mkdir_p \
+ sc_perl_at_substs \
+ sc_unquoted_DESTDIR \
+ sc_tabs_in_texi \
+ sc_at_in_texi
  WGET = wget
  WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/
  WGET_SV_GIT_CF = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f='
@@@ -263,15 -305,15 +305,15 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
 -            echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
 -            $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu  \
 +            echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
 +            $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  Makefile
 +        $(AUTOMAKE) --gnu Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -294,7 -336,7 +336,7 @@@ $(am__aclocal_m4_deps)
  install-binSCRIPTS: $(bin_SCRIPTS)
        @$(NORMAL_INSTALL)
        test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-       @list='$(bin_SCRIPTS)'; \
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
  
  uninstall-binSCRIPTS:
        @$(NORMAL_UNINSTALL)
-       @list='$(bin_SCRIPTS)'; \
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
        files=`for p in $$list; do echo "$$p"; done | \
               sed -e 's,.*/,,;$(transform)'`; \
        test -n "$$list" || exit 0; \
@@@ -479,10 -521,14 +521,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
@@@ -796,55 -842,77 +842,77 @@@ INSTALL: lib/INSTAL
  dist-hook:
        cd $(distdir)/tests && chmod a+rx *.test
  
- # Some simple checks, and then ordinary check.  These are only really
- # guaranteed to work on my machine.
- maintainer-check: automake aclocal
+ .PHONY: $(syntax_check_rules)
+ $(syntax_check_rules): automake aclocal
+ maintainer-check: $(syntax_check_rules)
+ sc_diff_automake_in_automake:
        @if test `diff $(srcdir)/automake.in automake | wc -l` -ne 22; then \
          echo "found too many diffs between automake.in and automake"; 1>&2; \
          diff -c $(srcdir)/automake.in automake; \
          exit 1; \
        fi
+ sc_perl_syntax:
        perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w automake
        perllibdir="./lib$(PATH_SEPARATOR)$(srcdir)/lib" $(PERL) -c -w aclocal
+ sc_no_brace_variable_expansions:
        @if grep -F '$${' $(srcdir)/lib/am/[a-z]*.am | \
               grep -F -v '$$$$'; then \
          echo "Found too many uses of '\$${' in the lines above." 1>&2; \
          exit 1;                               \
        else :; fi
+ sc_rm_minus_f:
        @if grep -v '^#' $(srcdir)/lib/am/[a-z]*.am $(srcdir)/tests/*.test | \
            grep -E '\<rm ([^-]|\-[^f ]*\>)'; then \
          echo "Suspicious 'rm' invocation." 1>&2; \
          exit 1;                               \
        else :; fi
+ sc_no_for_variable_in_macro:
        @if grep 'for .* in \$$(' $(srcdir)/lib/am/[a-z]*.am; then \
          echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
          exit 1; \
        else :; fi
+ sc_mkinstalldirs:
        @if grep -n 'mkinstalldirs' $(srcdir)/lib/am/[a-z]*.am | \
              grep -F -v '$$(mkinstalldirs)'; then \
          echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \
          exit 1; \
        else :; fi
+ sc_pre_normal_post_install_uninstall:
        @if grep -E -n '\((PRE|NORMAL|POST)_(|UN)INSTALL\)' \
                   $(srcdir)/lib/am/[a-z]*.am | \
              grep -v ':##' | grep -v ':        @\$$('; then \
          echo "Found incorrect use of PRE/NORMAL/POST_INSTALL/UNINSTALL in the lines above" 1>&2; \
          exit 1; \
        else :; fi
+ sc_perl_no_undef:
        @if grep -n -w 'undef ' $(srcdir)/automake.in | \
              grep -F -v 'undef $$/'; then \
          echo "Found undef in automake.in; use delete instead" 1>&2; \
          exit 1; \
        fi
+ sc_perl_no_split_regex_space:
        @if grep -n 'split (/ /' $(srcdir)/automake.in; then \
          echo "Found bad split in the lines above." 1>&2; \
          exit 1; \
        fi
+ sc_cd_in_backquotes:
        @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am; then \
          echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
          exit 1; \
        fi
+ sc_cd_relative_dir:
        @if grep -n '^[^#]*cd ' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am | \
              grep -v 'echo.*cd ' | \
          echo "Consider using \$$(am__cd) in the lines above." 1>&2; \
          exit 1; \
        fi
+ sc_perl_at_uscore_in_scalar_context:
        @if grep -Hn '[^@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' $(srcdir)/automake.in; then \
          echo "Using @_ in a scalar context in the lines above." 1>&2; \
          exit 1; \
        fi
+ sc_perl_local_no_parens:
        @if grep '^[ \t]*local *(' $(srcdir)/automake.in; then \
          echo "Don't use \`local' with parens: use several \`local' above." >&2; \
          exit 1; \
        fi
+ sc_perl_local:
        @if grep -v '^[ \t]*local \$$_;' $(srcdir)/automake.in | \
                grep '^[ \t]*local [^*]'; then \
          echo "Please avoid \`local'." 1>&2; \
          exit 1; \
        fi
+ sc_AMDEP_TRUE_in_automake_in:
        @if grep '@AMDEP''_TRUE@' $(srcdir)/automake.in; then \
          echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \
          exit 1; \
        fi
+ sc_tests_make_without_am_makeflags:
        @if grep '^[^#].*(MAKE) ' $(srcdir)/lib/am/*.am $(srcdir)/automake.in |\
                grep -v 'AM_MAKEFLAGS'; then \
          echo 'Use $$(MAKE) $$(AM_MAKEFLAGS).' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_make:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*make'; then \
          echo 'Do not run "make" in the above tests.  Use "$$MAKE" instead.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_autoconf:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*autoconf'; then \
          echo 'Do not run "autoconf" in the above tests.  Use "$$AUTOCONF" instead.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_autoupdate:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*autoupdate'; then \
          echo 'Do not run "autoupdate" in the above tests.  Use "$$AUTOUPDATE" instead.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_automake:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep -E ':[   ]*automake([^:]|$$)'; then \
          echo 'Do not run "automake" in the above tests.  Use "$$AUTOMAKE" instead.' 1>&2;  \
          exit 1; \
        fi
+ sc_tests_here_document_format:
        @if grep '<<' $(srcdir)/tests/*.test | grep -v 'END' | grep -v 'EOF'; then \
          echo 'Use here documents with "END" and "EOF" only, for greppability.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_Exit_not_exit:
        @found=false; for file in $(srcdir)/tests/*.test; do \
          res=`sed -n '/^#/d; /^\$$PERL/d; /<<.*END/,/^END/{b;}; /<<.*EOF/,/^EOF/{b;}; /exit [$$0-9]/p' $$file`; \
          if test -n "$$res"; then \
          echo 'Do not call plain "exit", use "Exit" instead, in above tests.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_automake_fails:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep '\$$AUTOMAKE.*&&.*[eE]xit'; then \
          echo 'Use AUTOMAKE_fails + grep to catch automake failures in the above tests.' 1>&2;  \
          exit 1; \
        fi
+ sc_tests_plain_aclocal:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*aclocal'; then \
          echo 'Do not run "aclocal" in the above tests.  Use "$$ACLOCAL" instead.' 1>&2;  \
          exit 1; \
        fi
+ sc_tests_plain_perl:
        @if grep -v '^#' $(srcdir)/tests/*.test | grep ':[      ]*perl'; then \
          echo 'Do not run "perl" in the above tests.  Use "$$PERL" instead.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_required_after_defs:
        @for file in $(srcdir)/tests/*.test; do \
          if out=`sed -n '/defs/,$${/required=/p;}' $$file`; test -n "$$out"; then \
            echo 'Do not set "required" after sourcing "defs" in '"$$file: $$out" 1>&2; \
            exit 1; \
          fi; \
        done
+ sc_tests_overriding_macros_on_cmdline:
        @if grep -E '\$$MAKE .*(SHELL=.*=|=.*SHELL=)' $(srcdir)/tests/*.test; then \
          echo 'Rewrite "$$MAKE foo=bar SHELL=$$SHELL" as "foo=bar $$MAKE -e SHELL=$$SHELL"' 1>&2; \
          echo ' in the above lines, it is more portable.' 1>&2; \
          exit 1; \
        fi
 -      @if sed 's/DESTDIR=[^ ]*//; s/SHELL=[^ ]*//' $(srcdir)/tests/*.test | \
 -        grep '\$$MAKE .*=' ; then \
 +      @if sed 's/DESTDIR=[^ ]*//; s/SHELL=[^ ]*//; s/V=[^ ]*//' $(srcdir)/tests/*.test | \
 +          grep '\$$MAKE .*=' ; then \
          echo 'Rewrite "$$MAKE foo=bar" as "foo=bar $$MAKE -e" in the above lines,' 1>&2; \
          echo 'it is more portable.' 1>&2; \
          exit 1; \
          echo 'the above lines.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_sleep:
        @if grep -E '\bsleep +[12345]\b' $(srcdir)/tests/*.test; then \
          echo 'Do not use "sleep x" in the above tests.  Use "$$sleep" instead.' 1>&2; \
          exit 1; \
        fi
+ sc_tests_plain_egrep_fgrep:
        @if grep -E '\b[ef]grep\b' $(srcdir)/tests/*.test ; then \
          echo 'Do not use egrep or fgrep in test cases.  Use $$FGREP or $$EGREP.' 1>&2; \
          exit 1; \
          echo 'Do not use egrep or fgrep in the above files, they are not portable.' 1>&2; \
          exit 1; \
        fi
+ sc_mkdir_p:
        @if grep 'mkdir_p' $(srcdir)/automake.in \
              $(srcdir)/lib/am/*.am $(srcdir)/tests/*.test; then \
          echo 'Do not use mkdir_p in the above files, use MKDIR_P.' 1>&2; \
          exit 1; \
        fi
+ sc_perl_at_substs:
        @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' aclocal | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in aclocal" 1>&2; \
          exit 1; \
        @if test `grep -E '^[^#]*@[A-Za-z_0-9]+@' automake | wc -l` -ne 0; then \
          echo "Unresolved @...@ substitution in automake" 1>&2; \
          exit 1; \
-       fi; \
-       if grep -E "[^\'\"]\\\$$\(DESTDIR" $(srcdir)/lib/am/*.am; then \
+       fi
+ sc_unquoted_DESTDIR:
+       @if grep -E "[^\'\"]\\\$$\(DESTDIR" $(srcdir)/lib/am/*.am; then \
          echo 'Suspicious unquoted DESTDIR uses.' 1>&2 ; \
          exit 1; \
        fi
+ sc_tabs_in_texi:
        @if grep '      ' $(srcdir)/doc/automake.texi; then \
          echo 'Do not use tabs in the manual.' 1>&2; \
          exit 1; \
        fi
+ sc_at_in_texi:
        @if grep -E '([^@]|^)@([         ][^@]|$$)' $(srcdir)/doc/automake.texi; \
        then \
          echo 'Unescaped @.' 1>&2; \
diff --combined NEWS
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -83,6 -83,9 +83,9 @@@ New in 1.10a
      Both install and uninstall may sometimes enter (`cd' into) the target
      installation directory now, when no build-local scripts are used.
  
+     Both install and uninstall do not fail anymore but do nothing if an
+     installation directory variable like `bindir' is set to the empty string.
      For built-in rules, `make install' now fails reliably if installation
      of a file failed.  Conversely, `make uninstall' even succeeds when
      issued multiple times.
  
    - The `color-tests' option causes colored test result output on terminals.
  
 +  - The `parallel-tests' option enables a new test driver that allows for
 +    parallel test execution, and formatted result output as RST
 +    (reStructuredText) and HTML.  Enabling this option may require some
 +    changes to your test suite setup; see the manual for details.
 +
 +  - The `silent-rules' option enables Linux kernel-style silent build output.
 +    This option requires the widely supported but non-POSIX `make' feature
 +    of recursive variable expansion, so do not use it if your package needs
 +    to build with `make' implementations that do not support it.
 +    Besides the normal option setting methods, it can also be enabled
 +    globally by the new automake option `--silent-rules'.
 +
    - New prefix `notrans_' for manpages which should not be transformed
      by --program-transform.
  
@@@ -195,6 -186,9 +198,9 @@@ Bugs fixed in 1.10a
    - The default no-op recursive rules for these targets also work with BSD make
      now: html, install-html, install-dvi, install-pdf, install-pdf, install-info.
  
+   - `make distcheck' works also when both a directory and some file below it
+     have been added to a distribution variable, such as EXTRA_DIST or *_SOURCES.
  * Bugs introduced by 1.10:
  
    - Fix output of dummy dependency files in presence of post-processed
diff --combined automake.in
@@@ -88,9 -88,6 +88,9 @@@ struct (# Short name of the language (c
        # Content of the linking variable.
        'link' => "\$",
  
 +      # Name of the compiler variable (CC).
 +      'ccer' => "\$",
 +
        # Name of the linker variable (LD).
        'lder' => "\$",
        # Content of the linker variable ($(CC)).
@@@ -732,7 -729,6 +732,7 @@@ register_language ('name' => 'c'
                   'ansi' => 1,
                   'autodep' => '',
                   'flags' => ['CFLAGS', 'CPPFLAGS'],
 +                 'ccer' => 'CC',
                   'compiler' => 'COMPILE',
                   'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
                   'lder' => 'CCLD',
@@@ -753,7 -749,6 +753,7 @@@ register_language ('name' => 'cxx'
                   'autodep' => 'CXX',
                   'flags' => ['CXXFLAGS', 'CPPFLAGS'],
                   'compile' => '$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)',
 +                 'ccer' => 'CXX',
                   'compiler' => 'CXXCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -772,7 -767,6 +772,7 @@@ register_language ('name' => 'objc'
                   'autodep' => 'OBJC',
                   'flags' => ['OBJCFLAGS', 'CPPFLAGS'],
                   'compile' => '$(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)',
 +                 'ccer' => 'OBJC',
                   'compiler' => 'OBJCCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -790,7 -784,6 +790,7 @@@ register_language ('name' => 'upc'
                   'autodep' => 'UPC',
                   'flags' => ['UPCFLAGS', 'CPPFLAGS'],
                   'compile' => '$(UPC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_UPCFLAGS) $(UPCFLAGS)',
 +                 'ccer' => 'UPC',
                   'compiler' => 'UPCCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -815,7 -808,6 +815,7 @@@ register_language ('name' => 'yacc'
                   'config_vars' => ['YACC'],
                   'flags' => ['YFLAGS'],
                   'compile' => '$(YACC) $(YFLAGS) $(AM_YFLAGS)',
 +                 'ccer' => 'YACC',
                   'compiler' => 'YACCCOMPILE',
                   'extensions' => ['.y'],
                   'output_extensions' => sub { (my $ext = $_[0]) =~ tr/y/c/;
@@@ -829,7 -821,6 +829,7 @@@ register_language ('name' => 'yaccxx'
                   'config_vars' => ['YACC'],
                   'rule_file' => 'yacc',
                   'flags' => ['YFLAGS'],
 +                 'ccer' => 'YACC',
                   'compiler' => 'YACCCOMPILE',
                   'compile' => '$(YACC) $(YFLAGS) $(AM_YFLAGS)',
                   'extensions' => ['.y++', '.yy', '.yxx', '.ypp'],
@@@ -846,7 -837,6 +846,7 @@@ register_language ('name' => 'lex'
                   'rule_file' => 'lex',
                   'flags' => ['LFLAGS'],
                   'compile' => '$(LEX) $(LFLAGS) $(AM_LFLAGS)',
 +                 'ccer' => 'LEX',
                   'compiler' => 'LEXCOMPILE',
                   'extensions' => ['.l'],
                   'output_extensions' => sub { (my $ext = $_[0]) =~ tr/l/c/;
@@@ -860,7 -850,6 +860,7 @@@ register_language ('name' => 'lexxx'
                   'rule_file' => 'lex',
                   'flags' => ['LFLAGS'],
                   'compile' => '$(LEX) $(LFLAGS) $(AM_LFLAGS)',
 +                 'ccer' => 'LEX',
                   'compiler' => 'LEXCOMPILE',
                   'extensions' => ['.l++', '.ll', '.lxx', '.lpp'],
                   'output_extensions' => sub { (my $ext = $_[0]) =~ tr/l/c/;
@@@ -879,7 -868,6 +879,7 @@@ register_language ('name' => 'asm'
                   # or anything else required.  They can also set CCAS.
                   # Or simply use Preprocessed Assembler.
                   'compile' => '$(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)',
 +                 'ccer' => 'CCAS',
                   'compiler' => 'CCASCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -896,7 -884,6 +896,7 @@@ register_language ('name' => 'cppasm'
                   'autodep' => 'CCAS',
                   'flags' => ['CCASFLAGS', 'CPPFLAGS'],
                   'compile' => '$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)',
 +                 'ccer' => 'CPPAS',
                   'compiler' => 'CPPASCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -913,7 -900,6 +913,7 @@@ register_language ('name' => 'f77'
                   'link' => '$(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
                   'flags' => ['FFLAGS'],
                   'compile' => '$(F77) $(AM_FFLAGS) $(FFLAGS)',
 +                 'ccer' => 'F77',
                   'compiler' => 'F77COMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -931,10 -917,10 +931,11 @@@ register_language ('name' => 'fc'
                   'link' => '$(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
                   'flags' => ['FCFLAGS'],
                   'compile' => '$(FC) $(AM_FCFLAGS) $(FCFLAGS)',
 +                 'ccer' => 'FC',
                   'compiler' => 'FCCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
+                  'libtool_tag' => 'FC',
                   'lder' => 'FCLD',
                   'ld' => '$(FC)',
                   'pure' => 1,
@@@ -949,7 -935,6 +950,7 @@@ register_language ('name' => 'ppfc'
                   'lder' => 'FCLD',
                   'ld' => '$(FC)',
                   'flags' => ['FCFLAGS', 'CPPFLAGS'],
 +                 'ccer' => 'PPFC',
                   'compiler' => 'PPFCCOMPILE',
                   'compile' => '$(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)',
                   'compile_flag' => '-c',
@@@ -981,7 -966,6 +982,7 @@@ register_language ('name' => 'ppf77'
                   'lder' => 'F77LD',
                   'ld' => '$(F77)',
                   'flags' => ['FFLAGS', 'CPPFLAGS'],
 +                 'ccer' => 'PPF77',
                   'compiler' => 'PPF77COMPILE',
                   'compile' => '$(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)',
                   'compile_flag' => '-c',
@@@ -1001,7 -985,6 +1002,7 @@@ register_language ('name' => 'ratfor'
                   'flags' => ['RFLAGS', 'FFLAGS'],
                   # FIXME also FFLAGS.
                   'compile' => '$(F77) $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)',
 +                 'ccer' => 'F77',
                   'compiler' => 'RCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -1018,7 -1001,6 +1019,7 @@@ register_language ('name' => 'java'
                   'autodep' => 'GCJ',
                   'flags' => ['GCJFLAGS'],
                   'compile' => '$(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)',
 +                 'ccer' => 'GCJ',
                   'compiler' => 'GCJCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@@ -1111,89 -1093,6 +1112,89 @@@ sub backname ($
  
  ################################################################
  
 +# `silent-rules' mode handling functions.
 +
 +# verbose_var (NAME)
 +# ------------------
 +# The public variable stem used to implement `silent-rules'.
 +sub verbose_var ($)
 +{
 +    my ($name) = @_;
 +    return 'AM_V_' . $name;
 +}
 +
 +# verbose_private_var (NAME)
 +# --------------------------
 +# The naming policy for the private variables for `silent-rules'.
 +sub verbose_private_var ($)
 +{
 +    my ($name) = @_;
 +    return 'am__v_' . $name;
 +}
 +
 +# define_verbose_var (NAME, VAL)
 +# ------------------------------
 +# For `silent-rules' mode, setup VAR and dispatcher, to expand to VAL if silent.
 +sub define_verbose_var ($$)
 +{
 +    my ($name, $val) = @_;
 +    my $var = verbose_var ($name);
 +    my $pvar = verbose_private_var ($name);
 +    if (option 'silent-rules')
 +      {
 +      # Using `$V' instead of `$(V)' breaks IRIX make.
 +      define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL);
 +      define_variable ($pvar . '_', $val, INTERNAL);
 +      define_variable ($pvar . '_0', $val, INTERNAL);
 +      }
 +}
 +
 +# Above should not be needed in the general automake code.
 +
 +# verbose_flag (NAME)
 +# -------------------
 +# Contents of %VERBOSE%: variable to expand before rule command.
 +sub verbose_flag ($)
 +{
 +    my ($name) = @_;
 +    return '$(' . verbose_var ($name) . ')'
 +      if (option 'silent-rules');
 +    return '';
 +}
 +
 +# silent_flag
 +# -----------
 +# Contents of %SILENT%: variable to expand to `@' when silent.
 +sub silent_flag ()
 +{
 +    return verbose_flag ('at');
 +}
 +
 +# define_verbose_tagvar (NAME)
 +# ----------------------------
 +# Engage the needed `silent-rules' machinery for tag NAME.
 +sub define_verbose_tagvar ($)
 +{
 +    my ($name) = @_;
 +    if (option 'silent-rules')
 +      {
 +      define_verbose_var ($name, '@echo "  '. $name . ' ' x (6 - length ($name)) . '" $@;');
 +      define_verbose_var ('at', '@');
 +      }
 +}
 +
 +# define_verbose_libtool
 +# ----------------------
 +# Engage the needed `silent-rules' machinery for `libtool --silent'.
 +sub define_verbose_libtool ()
 +{
 +    define_verbose_var ('lt', '--silent');
 +    return verbose_flag ('lt');
 +}
 +
 +
 +################################################################
 +
  
  # Handle AUTOMAKE_OPTIONS variable.  Return 1 on error, 0 otherwise.
  sub handle_options
        }
      }
  
 +  # Override portability-recursive warning.
 +  switch_warning ('no-portability-recursive')
 +    if option 'silent-rules';
 +
    if ($strictness == GNITS)
      {
        set_option ('readme-alpha', INTERNAL);
@@@ -1357,9 -1252,6 +1358,9 @@@ sub handle_language
          (option 'no-dependencies' || $lang->autodep eq 'no')
          ? ('FALSE', 'FALSE') : ('AMDEP', "am__fastdep$fpfx");
  
 +      my $verbose = verbose_flag ($lang->ccer || 'GEN');
 +      my $silent = silent_flag ();
 +
        my %transform = ('EXT'     => $ext,
                         'PFX'     => $pfx,
                         'FPFX'    => $fpfx,
                         SUBDIROBJ     => 0,
                         'DERIVED-EXT' => 'BUG',
                         DIST_SOURCE   => 1,
 +                       VERBOSE   => $verbose,
 +                       SILENT    => $silent,
                        );
  
        # Generate the appropriate rules for this extension.
            my $ptltflags = "${derived}_LIBTOOLFLAGS";
            $ptltflags = 'AM_LIBTOOLFLAGS' unless set_seen $ptltflags;
  
 +          my $ltverbose = define_verbose_libtool ();
            my $obj_ltcompile =
 -            "\$(LIBTOOL) $libtool_tag\$($ptltflags) \$(LIBTOOLFLAGS) "
 +            "\$(LIBTOOL) $ltverbose $libtool_tag\$($ptltflags) \$(LIBTOOLFLAGS) "
              . "--mode=compile $obj_compile";
  
            # We _need_ `-o' for per object rules.
                             OBJOBJ    => "$obj.obj",
                             LTOBJ     => "$obj.lo",
  
 +                           VERBOSE   => $verbose,
 +                           SILENT    => $silent,
                             COMPILE   => $obj_compile,
                             LTCOMPILE => $obj_ltcompile,
                             -o        => $output_flag,
          unless defined $done{$languages{'c'}};
        define_linker_variable ($languages{'c'});
        }
 +
 +    # Always provide the user with `AM_V_GEN' for `silent-rules' mode.
 +    define_verbose_tagvar ('GEN');
  }
  
  
@@@ -2629,8 -2513,7 +2630,8 @@@ sub handle_program
        set_seen ($xname . '_LDFLAGS');
  
        # Determine program to use for link.
 -      my $xlink = &define_per_target_linker_variable ($linker, $xname);
 +      my($xlink, $vlink) = &define_per_target_linker_variable ($linker, $xname);
 +      $vlink = verbose_flag ($vlink || 'GEN');
  
        # If the resulting program lies into a subdirectory,
        # make sure this directory will exist.
                                       PROGRAM  => $one_file,
                                       XPROGRAM => $xname,
                                       XLINK    => $xlink,
 +                                     VERBOSE  => $vlink,
                                       DIRSTAMP => $dirstamp,
                                       EXEEXT   => '$(EXEEXT)');
  
@@@ -2682,7 -2564,6 +2683,7 @@@ sub handle_librarie
  
    &define_variable ('AR', 'ar', INTERNAL);
    &define_variable ('ARFLAGS', 'cru', INTERNAL);
 +  &define_verbose_tagvar ('AR');
  
    foreach my $pair (@liblist)
      {
        # If the resulting library lies into a subdirectory,
        # make sure this directory will exist.
        my $dirstamp = require_build_directory_maybe ($onelib);
 +      my $verbose = verbose_flag ('AR');
 +      my $silent = silent_flag ();
  
        $output_rules .= &file_contents ('library',
                                       $where,
 +                                     VERBOSE  => $verbose,
 +                                     SILENT   => $silent,
                                       LIBRARY  => $onelib,
                                       XLIBRARY => $xlib,
                                       DIRSTAMP => $dirstamp);
@@@ -2935,8 -2812,7 +2936,8 @@@ sub handle_ltlibrarie
                                             NONLIBTOOL => 0, LIBTOOL => 1);
  
        # Determine program to use for link.
 -      my $xlink = &define_per_target_linker_variable ($linker, $xlib);
 +      my($xlink, $vlink) = &define_per_target_linker_variable ($linker, $xlib);
 +      $vlink = verbose_flag ($vlink || 'GEN');
  
        my $rpathvar = "am_${xlib}_rpath";
        my $rpath = "\$($rpathvar)";
                                       XLTLIBRARY => $xlib,
                                       RPATH      => $rpath,
                                       XLINK      => $xlink,
 +                                     VERBOSE    => $vlink,
                                       DIRSTAMP   => $dirstamp);
        if ($seen_libobjs)
        {
@@@ -4178,10 -4053,6 +4179,10 @@@ sub handle_configure ($$$@
    define_pretty_variable ('am__configure_deps', TRUE, INTERNAL,
                          @configuredeps);
  
 +  my $automake_options = '--' . (global_option 'cygnus' ? 'cygnus' : $strictness_name)
 +                       . (global_option 'no-dependencies' ? ' --ignore-deps' : '')
 +                       . (global_option 'silent-rules' ? ' --silent-rules' : '');
 +
    $output_rules .= file_contents
      ('configure',
       new Automake::Location,
       'MAKEFILE-IN'         => $rel_makefile_in,
       'MAKEFILE-IN-DEPS'    => "@include_stack",
       'MAKEFILE-AM'         => $rel_makefile_am,
 -     STRICTNESS            => global_option 'cygnus'
 -                              ? 'cygnus' : $strictness_name,
 -     'USE-DEPS'            => global_option 'no-dependencies'
 -                              ? ' --ignore-deps' : '',
 +     'AUTOMAKE-OPTIONS'    => $automake_options,
       'MAKEFILE-AM-SOURCES' => "$makefile$colon_infile",
 -     'REGEN-ACLOCAL-M4'    => $regen_aclocal_m4);
 +     'REGEN-ACLOCAL-M4'    => $regen_aclocal_m4,
 +     VERBOSE               => verbose_flag ('GEN'));
  
    if ($relative_dir eq '.')
      {
@@@ -4879,95 -4752,13 +4880,95 @@@ sub handle_test
      {
        push (@check_tests, 'check-TESTS');
        $output_rules .= &file_contents ('check', new Automake::Location,
 -                                     COLOR => !! option 'color-tests');
 +                                     COLOR => !! option 'color-tests',
 +                                     PARALLEL_TESTS => !! option 'parallel-tests');
  
        # Tests that are known programs should have $(EXEEXT) appended.
        # For matching purposes, we need to adjust XFAIL_TESTS as well.
        append_exeext { exists $known_programs{$_[0]} } 'TESTS';
        append_exeext { exists $known_programs{$_[0]} } 'XFAIL_TESTS'
        if (var ('XFAIL_TESTS'));
 +
 +      if (option 'parallel-tests')
 +        {
 +        define_variable ('TEST_SUITE_LOG', 'test-suite.log', INTERNAL);
 +        define_variable ('TEST_SUITE_HTML', '$(TEST_SUITE_LOG:.log=.html)', INTERNAL);
 +        my $suff = '.test';
 +        my $at_exeext = '';
 +        if (exists $configure_vars{'EXEEXT'})
 +          {
 +            $at_exeext = subst ('EXEEXT');
 +            $suff = $at_exeext  . ' ' . $suff;
 +          }
 +        define_variable ('TEST_EXTENSIONS', $suff, INTERNAL);
 +        # FIXME: this mishandles conditions.
 +        my @test_suffixes = (var 'TEST_EXTENSIONS')->value_as_list_recursive;
 +        if (exists $configure_vars{'EXEEXT'})
 +          {
 +            unshift (@test_suffixes, $at_exeext)
 +              unless $test_suffixes[0] eq $at_exeext;
 +          }
 +        unshift (@test_suffixes, '');
 +
 +        transform_variable_recursively
 +          ('TESTS', 'TEST_LOGS', 'am__testlogs', 1, INTERNAL,
 +            sub {
 +              my ($subvar, $val, $cond, $full_cond) = @_;
 +              my $obj = $val;
 +              return $obj
 +                if $val =~ /^\@.*\@$/;
 +              $obj =~ s/\$\(EXEEXT\)$//o;
 +              foreach my $test_suffix (@test_suffixes)
 +                {
 +                  next
 +                    if $test_suffix eq $at_exeext || $test_suffix eq '';
 +                  return substr ($obj, 0, length ($obj) - length ($test_suffix)) . '.log'
 +                    if substr ($obj, - length ($test_suffix)) eq $test_suffix;
 +                }
 +              $obj .= '.log';
 +              $output_rules .= file_contents ('check2', new Automake::Location,
 +                                              GENERIC => 0,
 +                                              OBJ => $obj,
 +                                              SOURCE => $val,
 +                                              EXT => '');
 +              return $obj;
 +            });
 +
 +        my $nhelper=1;
 +        my $prev = 'TESTS';
 +        my $post = '';
 +        my $last_suffix = $test_suffixes[$#test_suffixes];
 +        my $cur = '';
 +        foreach my $test_suffix (@test_suffixes)
 +          {
 +            if ($test_suffix eq $last_suffix)
 +              {
 +                $cur = 'TEST_LOGS';
 +              }
 +            else
 +              {
 +                $cur = 'am__test_logs' . $nhelper;
 +              }
 +            define_variable ($cur,
 +              '$(' . $prev . ':' . $test_suffix . $post . '=.log)', INTERNAL);
 +            $post = '.log';
 +            $prev = $cur;
 +            $nhelper++;
 +            $output_rules .= file_contents ('check2', new Automake::Location,
 +                                            GENERIC => 1,
 +                                            OBJ => '',
 +                                            SOURCE => '$<',
 +                                            EXT => $test_suffix)
 +              if $test_suffix ne $at_exeext && $test_suffix ne '';
 +          }
 +
 +        define_variable ('TEST_LOGS_TMP', '$(TEST_LOGS:.log=.log-t)', INTERNAL);
 +
 +        $clean_files{'$(TEST_LOGS_TMP)'} = MOSTLY_CLEAN;
 +        $clean_files{'$(TEST_LOGS)'} = MOSTLY_CLEAN;
 +        $clean_files{'$(TEST_SUITE_LOG)'} = MOSTLY_CLEAN;
 +        $clean_files{'$(TEST_SUITE_HTML)'} = MOSTLY_CLEAN;
 +      }
      }
  }
  
@@@ -6338,15 -6129,11 +6339,15 @@@ sub define_compiler_variable ($
      $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
        if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
      &define_variable ($var, $value, INTERNAL);
 -    &define_variable ("LT$var",
 -                    "\$(LIBTOOL) $libtool_tag\$(AM_LIBTOOLFLAGS) "
 -                    . "\$(LIBTOOLFLAGS) --mode=compile $value",
 -                    INTERNAL)
 -      if var ('LIBTOOL');
 +    if (var ('LIBTOOL'))
 +      {
 +      my $verbose = define_verbose_libtool ();
 +      &define_variable ("LT$var",
 +                        "\$(LIBTOOL) $verbose $libtool_tag\$(AM_LIBTOOLFLAGS) "
 +                        . "\$(LIBTOOLFLAGS) --mode=compile $value",
 +                        INTERNAL);
 +      }
 +    define_verbose_tagvar ($lang->ccer || 'GEN');
  }
  
  
@@@ -6363,16 -6150,12 +6364,16 @@@ sub define_linker_variable ($
      # CCLD = $(CC).
      &define_variable ($lang->lder, $lang->ld, INTERNAL);
      # CCLINK = $(CCLD) blah blah...
 -    &define_variable ($lang->linker,
 -                    ((var ('LIBTOOL') ?
 -                      "\$(LIBTOOL) $libtool_tag\$(AM_LIBTOOLFLAGS) "
 -                      . "\$(LIBTOOLFLAGS) --mode=link " : '')
 -                     . $lang->link),
 -                    INTERNAL);
 +    my $link = '';
 +    if (var ('LIBTOOL'))
 +      {
 +      my $verbose = define_verbose_libtool ();
 +      $link = "\$(LIBTOOL) $verbose $libtool_tag\$(AM_LIBTOOLFLAGS) "
 +              . "\$(LIBTOOLFLAGS) --mode=link ";
 +      }
 +    &define_variable ($lang->linker, $link . $lang->link, INTERNAL);
 +    &define_variable ($lang->compiler,  $lang);
 +    &define_verbose_tagvar ($lang->lder || 'GEN');
  }
  
  sub define_per_target_linker_variable ($$)
        $libtool_tag = '--tag=' . $lang->libtool_tag . ' '
        if $lang->libtool_tag && exists $libtool_tags{$lang->libtool_tag};
  
 +      my $verbose = define_verbose_libtool ();
        $link_command =
 -      "\$(LIBTOOL) $libtool_tag\$(AM_LIBTOOLFLAGS) \$(LIBTOOLFLAGS) "
 +      "\$(LIBTOOL) $verbose $libtool_tag\$(AM_LIBTOOLFLAGS) \$(LIBTOOLFLAGS) "
        . "--mode=link " . $link_command;
      }
  
  
    # If the computed command is the same as the generic command, use
    # the command linker variable.
 -  return $lang->linker
 +  return ($lang->linker, $lang->lder)
      if $link_command eq $orig_command;
  
    &define_variable ("${target}_LINK", $link_command, INTERNAL);
 -  return "${target}_LINK";
 +  return ("${target}_LINK", $lang->lder);
  }
  
  ################################################################
@@@ -8116,9 -7898,6 +8117,9 @@@ Dependency tracking
    -i, --ignore-deps      disable dependency tracking code
        --include-deps     enable dependency tracking code
  
 +Verbosity of generated rules:
 +      --silent-rules     enable silent build rules
 +
  Flavors:
        --cygnus           assume program is part of Cygnus-style tree
        --foreign          set strictness to foreign
@@@ -8229,9 -8008,7 +8230,9 @@@ sub parse_arguments (
       'f|force-missing'  => \$force_missing,
       'o|output-dir=s' => \$output_directory,
       'a|add-missing'  => \$add_missing,
 -     'c|copy'         => \$copy_missing,
 +     'c|copy'         => \$copy_missing,
 +     'silent-rules'   => sub { set_global_option ('silent-rules',
 +                                                  $cli_where); },
       'v|verbose'      => sub { setup_channel 'verb', silent => 0; },
       'W|warnings=s'     => \&parse_warnings,
       # These long options (--Werror and --Wno-error) for backward
diff --combined doc/Makefile.in
@@@ -238,9 -238,9 +238,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  doc/Makefile
 +        $(AUTOMAKE) --gnu doc/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -334,7 -334,8 +334,8 @@@ maintainer-clean-vti
  
  uninstall-dvi-am:
        @$(NORMAL_UNINSTALL)
-       @list='$(DVIS)'; for p in $$list; do \
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
          $(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
          rm -f "$(DESTDIR)$(dvidir)/$$f"; \
  
  uninstall-html-am:
        @$(NORMAL_UNINSTALL)
-       @list='$(HTMLS)'; for p in $$list; do \
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
          $(am__strip_dir) \
          echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
          rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
@@@ -374,7 -376,8 +376,8 @@@ uninstall-info-am
  
  uninstall-pdf-am:
        @$(NORMAL_UNINSTALL)
-       @list='$(PDFS)'; for p in $$list; do \
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
          $(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
          rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
  
  uninstall-ps-am:
        @$(NORMAL_UNINSTALL)
-       @list='$(PSS)'; for p in $$list; do \
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
          $(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
          rm -f "$(DESTDIR)$(psdir)/$$f"; \
@@@ -423,7 -427,7 +427,7 @@@ maintainer-clean-aminfo
  install-man1: $(dist_man1_MANS)
        @$(NORMAL_INSTALL)
        test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-       @list='$(dist_man1_MANS)'; \
+       @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
        { for i in $$list; do echo "$$i"; done; \
        } | while read p; do \
          if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
  
  uninstall-man1:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_man1_MANS)'; \
+       @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
        files=`{ for i in $$list; do echo "$$i"; done; \
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
  install-dist_docDATA: $(dist_doc_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_docDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_doc_DATA)'; \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
@@@ -555,10 -560,14 +560,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
@@@ -628,7 -637,8 +637,8 @@@ install-dvi: install-dvi-a
  install-dvi-am: $(DVIS)
        @$(NORMAL_INSTALL)
        test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
-       @list='$(DVIS)'; for p in $$list; do \
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
@@@ -643,7 -653,8 +653,8 @@@ install-html: install-html-a
  install-html-am: $(HTMLS)
        @$(NORMAL_INSTALL)
        test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
-       @list='$(HTMLS)'; list2=; for p in $$list; do \
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
          $(am__strip_dir) \
          if test -d "$$d$$p"; then \
@@@ -666,7 -677,7 +677,7 @@@ install-info-am: $(INFO_DEPS
        @$(NORMAL_INSTALL)
        test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       list='$(INFO_DEPS)'; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
        for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
        @$(POST_INSTALL)
        @if (install-info --version && \
             install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
-         list='$(INFO_DEPS)'; \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
          for file in $$list; do \
            relfile=`echo "$$file" | sed 's|^.*/||'`; \
            echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
@@@ -700,7 -711,8 +711,8 @@@ install-pdf: install-pdf-a
  install-pdf-am: $(PDFS)
        @$(NORMAL_INSTALL)
        test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
-       @list='$(PDFS)'; for p in $$list; do \
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
@@@ -712,7 -724,8 +724,8 @@@ install-ps: install-ps-a
  install-ps-am: $(PSS)
        @$(NORMAL_INSTALL)
        test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
-       @list='$(PSS)'; for p in $$list; do \
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
diff --combined doc/automake.texi
@@@ -1027,7 -1027,7 +1027,7 @@@ create output
  @end table
  
  For instance when installing GCC, the GNU Compiler Collection, we can
- use @option{--target=@var{TARGET}} to specify that we want to build
+ use @option{--target=@/@var{TARGET}} to specify that we want to build
  GCC as a cross-compiler for @var{TARGET}.  Mixing @option{--build} and
  @option{--target}, we can actually cross-compile a cross-compiler;
  such a three-way cross-compilation is known as a @dfn{Canadian cross}.
@@@ -2515,10 -2515,6 +2515,10 @@@ Ordinarily each @file{Makefile.in} is c
  corresponding @file{Makefile.am}.  This option is deprecated and will be
  removed in a future release.
  
 +@item --silent-rules
 +@opindex --silent-rules
 +Enable the @option{silent-rules} option globally (@pxref{Options}).
 +
  @item -v
  @itemx --verbose
  @opindex -v
@@@ -2566,8 -2562,6 +2566,8 @@@ variables
  The categories output by default are @samp{syntax} and
  @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
  are enabled in @option{--gnu} and @option{--gnits} strictness.
 +On the other hand, the @option{silent-rules} options (@pxref{Options})
 +turns off portability warnings about recursive variable expansions.
  
  @vindex WARNINGS
  The environment variable @env{WARNINGS} can contain a comma separated
@@@ -5267,9 -5261,7 +5267,9 @@@ setting
  The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
  not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
  Variables Ordering}.  It allows users to run @samp{make
 -LIBTOOLFLAGS=--silent}, for instance.
 +LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
 +@command{libtool} can also be influenced with the Automake
 +@option{silent-rules} option (@pxref{Options}).
  
  
  @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
@@@ -6040,7 -6032,7 +6040,7 @@@ We recommend using the following renami
  #define yylhs   c_yylhs
  #define yylen   c_yylen
  #define yydefred c_yydefred
- #define yydgoto c_yydgoto
+ #define yydgoto  c_yydgoto
  #define yysindex c_yysindex
  #define yyrindex c_yyrindex
  #define yygindex c_yygindex
@@@ -6320,7 -6312,6 +6320,6 @@@ Fortran 77, C and C++ compilers on near
  @command{cfortran} is not yet Free Software, but it will be in the next
  major release.}.
  
- @page
  Automake can help in two ways:
  
  @enumerate
@@@ -6373,8 -6364,6 +6372,6 @@@ is mentioned in @file{configure.ac}.  A
  been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
  Automake would have issued a warning.
  
- @page
  @menu
  * How the Linker is Chosen::    Automatic linker selection
  @end menu
@@@ -6891,8 -6880,8 +6888,8 @@@ will install the two files as @file{$(i
  Usually, only header files that accompany installed libraries need to
  be installed.  Headers used by programs or convenience libraries are
  not installed.  The @code{noinst_HEADERS} variable can be used for
- such headers.  However when the header actually belongs to one
- convenient library or program, we recommend listing it in the
+ such headers.  However when the header actually belongs to a single
+ convenience library or program, we recommend listing it in the
  program's or library's @code{_SOURCES} variable (@pxref{Program
  Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
  the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
@@@ -8302,8 -8291,7 +8299,8 @@@ default, only the @code{dist-gzip} targ
  @cindex @code{make check}
  @trindex check
  
 -Automake supports two forms of test suites.
 +Automake supports three forms of test suites, the first two of which
 +are very similar.
  
  @section Simple Tests
  
@@@ -8339,7 -8327,7 +8336,7 @@@ terminal with @samp{AM_COLOR_TESTS=alwa
  @vindex TESTS
  @vindex TESTS_ENVIRONMENT
  The variable @code{TESTS_ENVIRONMENT} can be used to set environment
 -variables for the test run; the environment variable @code{srcdir} is
 +variables for the test run; the environment variable @env{srcdir} is
  set in the rule.  If all your test programs are scripts, you can also
  set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
  @samp{$(SHELL) -x} can be useful for debugging the tests), or any other
@@@ -8376,115 -8364,6 +8373,115 @@@ that @code{check_PROGRAMS} are @emph{no
  by the tests, not the tests themselves.  Of course you can set
  @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
  
 +
 +@section Simple tests using @samp{parallel-tests}
 +@cindex @option{parallel-tests}, Using
 +The option @option{parallel-tests} (@pxref{Options}) enables a test
 +suite driver that is mostly compatible to the simple test driver
 +described above, but provides a few more features and slightly different
 +semantics.  It features concurrent execution of tests with @code{make -j},
 +allows to specify inter-test dependencies, lazy reruns of tests that
 +have not completed in a prior run, summary and verbose output in
 +@samp{RST} (reStructuredText) and @samp{HTML} format, and hard errors
 +for exceptional failures.  Similar to the simple test driver,
 +@code{TESTS_ENVIRONMENT}, @code{AM_COLOR_TESTS}, @code{XFAIL_TESTS}, and
 +the @code{check_*} variables are honored, and the environment variable
 +@env{srcdir} is set during test execution.
 +
 +@vindex TEST_SUITE_LOG
 +@vindex TEST_LOGS
 +The driver operates by defining a set of @command{make} rules to create
 +a summary log file, @code{TEST_SUITE_LOG}, which defaults to
 +@file{test-suite.log} and requires a @file{.log} suffix.  This file
 +depends upon log files created for each single test program listed in
 +@code{TESTS}, which in turn contain all output produced by the
 +corresponding tests.
 +
 +@vindex TEST_EXTENSIONS
 +Each log file is created when the corresponding test has completed.
 +The set of log files is listed in the read-only variable
 +@code{TEST_LOGS}, and defaults to @code{TESTS}, with the executable
 +extension if any (@pxref{EXEEXT}), as well as any suffix listed in
 +@code{TEST_EXTENSIONS} removed, and @file{.log} appended.
 +@code{TEST_EXTENSIONS} defaults to @file{.test}.  Results are undefined
 +if a test file name ends in several concatenated suffixes.
 +
 +@vindex VERBOSE
 +As with the simple driver above, by default one status line is printed
 +per completed test, and a short summary after the suite has completed.
 +However, standard output and standard error of the test are redirected
 +to a per-test log file, so that parallel execution does not produce
 +intermingled output.  The output from failed tests is collected in the
 +@file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
 +file is output after the summary.  For best results, the tests should be
 +verbose by default now.
 +
 +@trindex mostlyclean
 +@trindex check-html
 +@vindex RST2HTML
 +@vindex TEST_SUITE_HTML
 +With @code{make check-html}, the log files may be converted from RST
 +(reStructuredText, see @uref{http://docutils.sourceforge.net/@/rst.html})
 +to HTML using @samp{RST2HTML}, which defaults to @command{rst2html} or
 +@command{rst2html.py}.  The variable @samp{TEST_SUITE_HTML} contains the
 +set of converted log files.  The log and HTML files are removed upon
 +@code{make mostlyclean}.
 +
 +@vindex DISABLE_HARD_ERRORS
 +@cindex Exit status 99, special interpretation
 +@cindex hard error
 +Even in the presence of expected failures (see @code{XFAIL_TESTS}, there
 +may be conditions under which a test outcome needs attention.  For
 +example, with test-driven development, you may write tests for features
 +that you have not implemented yet, and thus mark these tests as expected
 +to fail.  However, you may still be interested in exceptional conditions,
 +for example, tests that fail due to a segmentation violation or another
 +error that is independent of the feature awaiting implementation.
 +Tests can exit with an exit status of 99 to signal such a @emph{hard
 +error}.  Unless the variable @code{DISABLE_HARD_ERRORS} is set to a
 +nonempty value, such tests will be counted as failed.
 +
 +@vindex LAZY_TEST_SUITE
 +By default, all tests listed in @code{TESTS} are run upon @code{make
 +check}.  When @code{LAZY_TEST_SUITE} is nonempty, then log files of
 +a previous run are not removed before starting the test suite, so only
 +tests that have not yet been completed are run, as well as tests that
 +have been modified after the previous run.
 +
 +In order to guarantee an ordering between tests even with @code{make
 +-j@var{N}}, dependencies between the corresponding log files may be
 +specified through usual @command{make} dependencies.  For example, the
 +following snippet lets the test named @file{foo-execute.test} depend
 +upon completion of the test @file{foo-compile.test}:
 +
 +@example
 +TESTS = foo-compile.test foo-execute.test
 +foo-execute.log: foo-compile.log
 +@end example
 +
 +@noindent
 +Please note that this ordering ignores the @emph{results} of required
 +tests, thus the test @file{foo-execute.test} is run even if the test
 +@file{foo-compile.test} failed or was skipped beforehand.
 +
 +@cindex Unit tests
 +The combination of lazy test execution and correct dependencies between
 +tests and their sources may be exploited for efficient unit testing
 +during development.  To further speed up the edit-compile-test cycle, it
 +may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
 +instead of with @code{check_PROGRAMS}, as the former allows intertwined
 +compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
 +not cleaned automatically, @pxref{Uniform}).
 +
 +The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
 +conditional parts as well as configure substitutions.  In the latter
 +case, however, certain restrictions apply: substituted test names
 +must end with a nonempty test suffix like @file{.test}, so that one of
 +the inference rules generated by @command{automake} can apply.  For
 +literal test names, @command{automake} can generate per-target rules
 +to avoid this limitation.
 +
 +
  @section DejaGnu Tests
  
  If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
@@@ -8799,12 -8678,6 +8796,12 @@@ are ordinarily automatically provided b
  Don't require @file{texinfo.tex}, even if there are texinfo files in
  this directory.
  
 +@item @option{parallel-tests}
 +@cindex Option, @option{parallel-tests}
 +@opindex parallel-tests
 +Enable test suite driver for @code{TESTS} that can run tests in parallel
 +(@pxref{Tests}, for more information).
 +
  @item @option{readme-alpha}
  @cindex Option, @option{readme-alpha}
  @opindex readme-alpha
@@@ -8817,46 -8690,6 +8814,46 @@@ non-alpha releases.  The second form i
  @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
  letter; it should be omitted for non-alpha releases.
  
 +@item @option{silent-rules}
 +@cindex Option, @option{silent-rules}
 +@opindex silent-rules
 +Enable silent build rules.  This will cause many build rules to output a
 +status line of the form
 +
 +@example
 +  GEN @var{output-file}
 +@end example
 +
 +@noindent
 +instead of printing the command that will be executed to update
 +@var{output-file}.  It will also silence @command{libtool} output.
 +
 +@vindex @code{V}
 +The verbosity can be influenced at @command{make} run time by setting the
 +variable @code{V}: @samp{make V=0} is equivalent to @code{V} being unset,
 +while @samp{make V=1} will produce verbose output.
 +
 +For portability to different @command{make} implementations, package authors
 +are advised to not set the variable @code{V} inside the @file{Makefile.am}
 +file, to allow the user to override the value for subdirectories as well.
 +
 +The current implementation of this feature relies on a non-POSIX, but in
 +practice rather widely supported @file{Makefile} construct of nested
 +variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
 +@option{silent-rules} option if your package needs to build with
 +@command{make} implementations that do not support it.  The
 +@option{silent-rules} option turns off warnings about recursive variable
 +expansion, which are in turn enabled by @option{-Wportability}
 +(@pxref{Invoking Automake}).
 +
 +@vindex @code{AM_V_GEN}
 +@vindex @code{AM_V_at}
 +To extend the silent mode to your own rules, you can use the predefined
 +variable @code{AM_V_GEN} as a prefix to commands that should output a
 +status line in silent mode, and @code{AM_V_at} as a prefix to commands
 +that should not output anything in silent mode.  With @code{V=1}, these
 +variables will expand to empty strings.
 +
  @item @option{std-options}
  @cindex Options, @option{std-options}
  @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
diff --combined lib/Automake/Makefile.in
@@@ -84,6 -84,9 +84,9 @@@ am__installdirs = "$(DESTDIR)$(perllibd
  DATA = $(dist_perllib_DATA) $(nodist_perllib_DATA)
  RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive       \
    distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
  ETAGS = etags
  CTAGS = ctags
  DIST_SUBDIRS = $(SUBDIRS)
@@@ -251,9 -254,9 +254,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/Automake/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Automake/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  lib/Automake/Makefile
 +        $(AUTOMAKE) --gnu lib/Automake/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -275,7 -278,8 +278,8 @@@ $(am__aclocal_m4_deps)
  install-dist_perllibDATA: $(dist_perllib_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(perllibdir)" || $(MKDIR_P) "$(DESTDIR)$(perllibdir)"
-       @list='$(dist_perllib_DATA)'; for p in $$list; do \
+       @list='$(dist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_perllibDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_perllib_DATA)'; \
+       @list='$(dist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(perllibdir)' && rm -f" $$files ")"; \
  install-nodist_perllibDATA: $(nodist_perllib_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(perllibdir)" || $(MKDIR_P) "$(DESTDIR)$(perllibdir)"
-       @list='$(nodist_perllib_DATA)'; for p in $$list; do \
+       @list='$(nodist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-nodist_perllibDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(nodist_perllib_DATA)'; \
+       @list='$(nodist_perllib_DATA)'; test -n "$(perllibdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(perllibdir)' && rm -f" $$files ")"; \
@@@ -462,10 -467,14 +467,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
@@@ -176,9 -176,9 +176,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/Automake/tests/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Automake/tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  lib/Automake/tests/Makefile
 +        $(AUTOMAKE) --gnu lib/Automake/tests/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -312,10 -312,14 +312,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
diff --combined lib/Makefile.in
@@@ -87,6 -87,9 +87,9 @@@ am__installdirs = "$(DESTDIR)$(pkgvdata
  DATA = $(dist_pkgvdata_DATA) $(dist_script_DATA)
  RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive       \
    distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
  ETAGS = etags
  CTAGS = ctags
  DIST_SUBDIRS = $(SUBDIRS)
@@@ -226,9 -229,9 +229,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  lib/Makefile
 +        $(AUTOMAKE) --gnu lib/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -250,7 -253,8 +253,8 @@@ $(am__aclocal_m4_deps)
  install-dist_pkgvdataDATA: $(dist_pkgvdata_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(pkgvdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgvdatadir)"
-       @list='$(dist_pkgvdata_DATA)'; for p in $$list; do \
+       @list='$(dist_pkgvdata_DATA)'; test -n "$(pkgvdatadir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_pkgvdataDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_pkgvdata_DATA)'; \
+       @list='$(dist_pkgvdata_DATA)'; test -n "$(pkgvdatadir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(pkgvdatadir)' && rm -f" $$files ")"; \
  install-dist_scriptDATA: $(dist_script_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(scriptdir)" || $(MKDIR_P) "$(DESTDIR)$(scriptdir)"
-       @list='$(dist_script_DATA)'; for p in $$list; do \
+       @list='$(dist_script_DATA)'; test -n "$(scriptdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_scriptDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_script_DATA)'; \
+       @list='$(dist_script_DATA)'; test -n "$(scriptdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(scriptdir)' && rm -f" $$files ")"; \
@@@ -437,10 -442,14 +442,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
diff --combined lib/am/Makefile.in
@@@ -168,7 -168,6 +168,7 @@@ amdir = $(pkgvdatadir)/a
  dist_am_DATA = \
  ansi2knr.am \
  check.am \
 +check2.am \
  clean-hdr.am \
  clean.am \
  compile.am \
@@@ -219,9 -218,9 +219,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/am/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/am/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  lib/am/Makefile
 +        $(AUTOMAKE) --gnu lib/am/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -243,7 -242,8 +243,8 @@@ $(am__aclocal_m4_deps)
  install-dist_amDATA: $(dist_am_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(amdir)" || $(MKDIR_P) "$(DESTDIR)$(amdir)"
-       @list='$(dist_am_DATA)'; for p in $$list; do \
+       @list='$(dist_am_DATA)'; test -n "$(amdir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_amDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_am_DATA)'; \
+       @list='$(dist_am_DATA)'; test -n "$(amdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(amdir)' && rm -f" $$files ")"; \
@@@ -282,10 -282,14 +283,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
diff --combined m4/Makefile.in
@@@ -215,9 -215,9 +215,9 @@@ $(srcdir)/Makefile.in:  $(srcdir)/Makef
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  m4/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  m4/Makefile
 +        $(AUTOMAKE) --gnu m4/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -239,7 -239,8 +239,8 @@@ $(am__aclocal_m4_deps)
  install-dist_m4dataDATA: $(dist_m4data_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)"
-       @list='$(dist_m4data_DATA)'; for p in $$list; do \
+       @list='$(dist_m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
        done | $(am__base_list) | \
  
  uninstall-dist_m4dataDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_m4data_DATA)'; \
+       @list='$(dist_m4data_DATA)'; test -n "$(m4datadir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(m4datadir)' && rm -f" $$files ")"; \
@@@ -278,10 -279,14 +279,14 @@@ distdir: $(DISTFILES
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
diff --combined tests/Makefile.am
@@@ -1,27 -1,11 +1,27 @@@
  ## Process this file with automake to create Makefile.in
 +AUTOMAKE_OPTIONS = parallel-tests
  
 -XFAIL_TESTS =                                         \
 +XFAIL_TESTS =                                 \
  all.test                                      \
  auxdir2.test                                  \
  cond17.test                                   \
  txinfo5.test
  
 +include $(srcdir)/parallel-tests.am
 +
 +$(srcdir)/parallel-tests.am: gen-parallel-tests Makefile.am
 +      (cd $(srcdir) && $(SHELL) ./gen-parallel-tests) >$@
 +
 +$(parallel_tests): $(parallel_tests:-p.test=.test) Makefile.am
 +      input=`echo $@ | sed 's,.*/,,; s,-p.test$$,.test,'`; \
 +      sed 's,^\. \./defs,. ./defs-p,' < $(srcdir)/$$input > $@
 +      chmod a+rx $@
 +
 +MAINTAINERCLEANFILES = $(parallel_tests)
 +
 +defs-p: defs Makefile.am
 +      sed 's,^AM_INIT_AUTOMAKE$$,&([parallel-tests]),' < defs >$@
 +
  TESTS =       \
  aclibobj.test \
  aclocal.test \
@@@ -113,7 -97,6 +113,7 @@@ check7.test 
  check8.test \
  check9.test \
  check10.test \
 +check11.test \
  checkall.test \
  clean.test \
  clean2.test \
@@@ -257,8 -240,6 +257,8 @@@ distcom7.test 
  distdir.test \
  distname.test \
  dollar.test \
 +dollarvar.test \
 +dollarvar2.test \
  double.test \
  dup2.test \
  else.test \
@@@ -283,7 -264,6 +283,7 @@@ extra5.test 
  extra6.test \
  extra7.test \
  f90only.test \
 +flavor.test \
  flibs.test \
  fn99.test \
  fn99subdir.test \
@@@ -329,6 -309,14 +329,14 @@@ instsh2.test 
  instsh3.test \
  instdat.test \
  instdat2.test \
+ instdir.test \
+ instdir2.test \
+ instdir-java.test \
+ instdir-lisp.test \
+ instdir-ltlib.test \
+ instdir-prog.test \
+ instdir-python.test \
+ instdir-texi.test \
  instexec.test \
  instfail.test \
  instfail-info.test \
@@@ -483,12 -471,6 +491,12 @@@ overrid.test 
  parallel-am.test \
  parallel-am2.test \
  parallel-am3.test \
 +parallel-tests.test \
 +parallel-tests2.test \
 +parallel-tests3.test \
 +parallel-tests4.test \
 +parallel-tests5.test \
 +parallel-tests6.test \
  parse.test \
  percent.test \
  percent2.test \
@@@ -560,13 -542,6 +568,13 @@@ rulepat.test 
  sanity.test \
  scripts.test \
  seenc.test \
 +silent.test \
 +silent2.test \
 +silent3.test \
 +silent4.test \
 +silent5.test \
 +silent6.test \
 +silent7.test \
  sinclude.test \
  srcsub.test \
  srcsub2.test \
@@@ -708,16 -683,15 +716,16 @@@ yacc6.test 
  yacc7.test \
  yacc8.test \
  yaccpp.test \
 -yaccvpath.test
 +yaccvpath.test \
 +$(parallel_tests)
  
 -EXTRA_DIST = ChangeLog-old $(TESTS)
 +EXTRA_DIST = ChangeLog-old gen-parallel-tests $(TESTS)
  
  # Each test case depends on defs, aclocal, and automake.
 -check_SCRIPTS = defs aclocal-$(APIVERSION) automake-$(APIVERSION)
 +check_SCRIPTS = defs defs-p aclocal-$(APIVERSION) automake-$(APIVERSION) $(parallel_tests)
  
 -distclean-local: check-clean-local
 +clean-local: check-clean-local
  
  check-clean-local:
        -chmod -R u+rwx *.dir
 -      -rm -rf *.dir
 +      -rm -rf defs-p *.dir
diff --combined tests/Makefile.in
@@@ -32,10 -32,9 +32,10 @@@ NORMAL_UNINSTALL = 
  PRE_UNINSTALL = :
  POST_UNINSTALL = :
  build_triplet = @build@
 -subdir = tests
  DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 -      $(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs.in
 +      $(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs.in \
 +      $(srcdir)/parallel-tests.am
 +subdir = tests
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
        $(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
@@@ -67,68 -66,6 +67,68 @@@ test "X$(AM_COLOR_TESTS)" != Xno 
    blu='\e[1;34m'; \
    std='\e[m'; \
  }
 +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 +am__vpath_adj = case $$p in \
 +    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
 +    *) f=$$p;; \
 +  esac;
 +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
 +am__install_max = 40
 +am__nobase_strip_setup = \
 +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
 +am__nobase_strip = \
 +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
 +am__nobase_list = $(am__nobase_strip_setup); \
 +  for p in $$list; do echo "$$p $$p"; done | \
 +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
 +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
 +    if (++n[$$2] == $(am__install_max)) \
 +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
 +    END { for (dir in files) print dir, files[dir] }'
 +am__base_list = \
 +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
 +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 +# Restructured Text title and section.
 +am__rst_title = sed 's/.*/   &   /;h;s/./=/g;p;x;p;g;p;s/.*//'
 +am__rst_section = sed 'p;s/./=/g;p;g'
 +# Put stdin (possibly several lines separated by ".  ") in a box.
 +am__text_box = { nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
 +  sed "s/\\.  /\\$$nl/g"; } | sed '/^$$/d' |                  \
 +$(AWK) '{ if (final) final = final "\n" $$0; else final = $$0; }\
 +max < length($$0) { max = length($$0); }                      \
 +END {                                                         \
 +  for (i = 0; i < max; ++i) line = line "=";                  \
 +  print line; print final; print line;                                \
 +}'
 +# Solaris 10 'make', and several other traditional 'make' implementations,
 +# pass "-e" to $(SHELL).  This contradicts POSIX.  Work around the problem
 +# by disabling -e (using the XSI extension "set +e") if it's set.
 +am__sh_e_setup = case $$- in *e*) set +e;; esac
 +# To be inserted before the command running the test.  Creates the
 +# directory for the log if needed.  Stores in $dir the directory
 +# containing $f, in $tst the test, in $log the log, and passes
 +# TESTS_ENVIRONMENT.  Save and restore TERM around use of
 +# TESTS_ENVIRONMENT, in case that unsets it.
 +am__check_pre = \
 +$(am__sh_e_setup);                                    \
 +$(am__vpath_adj_setup) $(am__vpath_adj)                       \
 +srcdir=$(srcdir); export srcdir;                      \
 +rm -f $@-t;                                           \
 +trap 'st=$$?; rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st' \
 +  1 2 13 15;                                          \
 +am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;          \
 +test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?;       \
 +if test -f "./$$f"; then dir=./;                      \
 +elif test -f "$$f"; then dir=;                                \
 +else dir="$(srcdir)/"; fi;                            \
 +tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM;          \
 +$(TESTS_ENVIRONMENT)
 +TEST_SUITE_LOG = test-suite.log
 +TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
 +TEST_EXTENSIONS = .test
 +am__test_logs1 = $(TESTS:=.log)
 +TEST_LOGS = $(am__test_logs1:.test.log=.log)
 +TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
  ACLOCAL = @ACLOCAL@
  AMTAR = @AMTAR@
@@@ -218,36 -155,12 +218,36 @@@ target_alias = @target_alias
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
 +AUTOMAKE_OPTIONS = parallel-tests
  XFAIL_TESTS = \
  all.test                                      \
  auxdir2.test                                  \
  cond17.test                                   \
  txinfo5.test
  
 +parallel_tests = \
 +check-p.test \
 +check10-p.test \
 +check11-p.test \
 +check2-p.test \
 +check3-p.test \
 +check4-p.test \
 +check5-p.test \
 +check6-p.test \
 +check7-p.test \
 +check8-p.test \
 +check9-p.test \
 +color-p.test \
 +comment9-p.test \
 +dejagnu-p.test \
 +exeext4-p.test \
 +maken3-p.test \
 +maken4-p.test \
 +pr401-p.test \
 +pr401b-p.test \
 +pr401c-p.test
 +
 +MAINTAINERCLEANFILES = $(parallel_tests)
  TESTS = \
  aclibobj.test \
  aclocal.test \
@@@ -339,7 -252,6 +339,7 @@@ check7.test 
  check8.test \
  check9.test \
  check10.test \
 +check11.test \
  checkall.test \
  clean.test \
  clean2.test \
@@@ -483,8 -395,6 +483,8 @@@ distcom7.test 
  distdir.test \
  distname.test \
  dollar.test \
 +dollarvar.test \
 +dollarvar2.test \
  double.test \
  dup2.test \
  else.test \
@@@ -509,7 -419,6 +509,7 @@@ extra5.test 
  extra6.test \
  extra7.test \
  f90only.test \
 +flavor.test \
  flibs.test \
  fn99.test \
  fn99subdir.test \
@@@ -555,6 -464,14 +555,14 @@@ instsh2.test 
  instsh3.test \
  instdat.test \
  instdat2.test \
+ instdir.test \
+ instdir2.test \
+ instdir-java.test \
+ instdir-lisp.test \
+ instdir-ltlib.test \
+ instdir-prog.test \
+ instdir-python.test \
+ instdir-texi.test \
  instexec.test \
  instfail.test \
  instfail-info.test \
@@@ -709,12 -626,6 +717,12 @@@ overrid.test 
  parallel-am.test \
  parallel-am2.test \
  parallel-am3.test \
 +parallel-tests.test \
 +parallel-tests2.test \
 +parallel-tests3.test \
 +parallel-tests4.test \
 +parallel-tests5.test \
 +parallel-tests6.test \
  parse.test \
  percent.test \
  percent2.test \
@@@ -786,13 -697,6 +794,13 @@@ rulepat.test 
  sanity.test \
  scripts.test \
  seenc.test \
 +silent.test \
 +silent2.test \
 +silent3.test \
 +silent4.test \
 +silent5.test \
 +silent6.test \
 +silent7.test \
  sinclude.test \
  srcsub.test \
  srcsub2.test \
@@@ -934,18 -838,16 +942,18 @@@ yacc6.test 
  yacc7.test \
  yacc8.test \
  yaccpp.test \
 -yaccvpath.test
 +yaccvpath.test \
 +$(parallel_tests)
  
 -EXTRA_DIST = ChangeLog-old $(TESTS)
 +EXTRA_DIST = ChangeLog-old gen-parallel-tests $(TESTS)
  
  # Each test case depends on defs, aclocal, and automake.
 -check_SCRIPTS = defs aclocal-$(APIVERSION) automake-$(APIVERSION)
 +check_SCRIPTS = defs defs-p aclocal-$(APIVERSION) automake-$(APIVERSION) $(parallel_tests)
  all: all-am
  
  .SUFFIXES:
 -$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 +.SUFFIXES: .html .log .test
 +$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/parallel-tests.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
              exit 1;; \
          esac; \
        done; \
 -      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  tests/Makefile'; \
 +      echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
 -        $(AUTOMAKE) --gnu  tests/Makefile
 +        $(AUTOMAKE) --gnu tests/Makefile
  .PRECIOUS: Makefile
  Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@@ -988,153 -890,97 +996,153 @@@ ctags: CTAG
  CTAGS:
  
  
 -check-TESTS: $(TESTS)
 -      @failed=0; all=0; xfail=0; xpass=0; skip=0; \
 -      srcdir=$(srcdir); export srcdir; \
 -      list=' $(TESTS) '; \
 -      $(am__tty_colors); \
 -      if test -n "$$list"; then \
 -        for tst in $$list; do \
 -          if test -f ./$$tst; then dir=./; \
 -          elif test -f $$tst; then dir=; \
 -          else dir="$(srcdir)/"; fi; \
 -          if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
 -            all=`expr $$all + 1`; \
 -            case " $(XFAIL_TESTS) " in \
 -            *[\ \     ]$$tst[\ \      ]*) \
 -              xpass=`expr $$xpass + 1`; \
 -              failed=`expr $$failed + 1`; \
 -              col=$$red; res=XPASS; \
 -            ;; \
 -            *) \
 -              col=$$grn; res=PASS; \
 -            ;; \
 -            esac; \
 -          elif test $$? -ne 77; then \
 -            all=`expr $$all + 1`; \
 -            case " $(XFAIL_TESTS) " in \
 -            *[\ \     ]$$tst[\ \      ]*) \
 -              xfail=`expr $$xfail + 1`; \
 -              col=$$lgn; res=XFAIL; \
 -            ;; \
 -            *) \
 -              failed=`expr $$failed + 1`; \
 -              col=$$red; res=FAIL; \
 -            ;; \
 -            esac; \
 -          else \
 -            skip=`expr $$skip + 1`; \
 -            col=$$blu; res=SKIP; \
 -          fi; \
 -          echo "$${col}$$res$${std}: $$tst"; \
 -        done; \
 -        if test "$$all" -eq 1; then \
 -          tests="test"; \
 -          All=""; \
 -        else \
 -          tests="tests"; \
 -          All="All "; \
 -        fi; \
 -        if test "$$failed" -eq 0; then \
 -          if test "$$xfail" -eq 0; then \
 -            banner="$$All$$all $$tests passed"; \
 -          else \
 -            if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
 -            banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
 -          fi; \
 -        else \
 -          if test "$$xpass" -eq 0; then \
 -            banner="$$failed of $$all $$tests failed"; \
 -          else \
 -            if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
 -            banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
 -          fi; \
 -        fi; \
 -        dashes="$$banner"; \
 -        skipped=""; \
 -        if test "$$skip" -ne 0; then \
 -          if test "$$skip" -eq 1; then \
 -            skipped="($$skip test was not run)"; \
 -          else \
 -            skipped="($$skip tests were not run)"; \
 -          fi; \
 -          test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
 -            dashes="$$skipped"; \
 -        fi; \
 -        report=""; \
 -        if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
 -          report="Please report to $(PACKAGE_BUGREPORT)"; \
 -          test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
 -            dashes="$$report"; \
 -        fi; \
 -        dashes=`echo "$$dashes" | sed s/./=/g`; \
 -        if test "$$failed" -eq 0; then \
 -          echo "$$grn$$dashes"; \
 -        else \
 -          echo "$$red$$dashes"; \
 -        fi; \
 -        echo "$$banner"; \
 -        test -z "$$skipped" || echo "$$skipped"; \
 -        test -z "$$report" || echo "$$report"; \
 -        echo "$$dashes$$std"; \
 -        test "$$failed" -eq 0; \
 -      else :; fi
 +# To be appended to the command running the test.  Handle the stdout
 +# and stderr redirection, and catch the exit status.
 +am__check_post =                                      \
 +>$@-t 2>&1;                                           \
 +estatus=$$?;                                          \
 +if test -n '$(DISABLE_HARD_ERRORS)'                   \
 +   && test $$estatus -eq 99; then                     \
 +  estatus=1;                                          \
 +fi;                                                   \
 +TERM=$$__SAVED_TERM; export TERM;                     \
 +$(am__tty_colors);                                    \
 +xfailed=PASS;                                         \
 +case " $(XFAIL_TESTS) " in                            \
 +  *[\ \       ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
 +    xfailed=XFAIL;;                                   \
 +esac;                                                 \
 +case $$estatus:$$xfailed in                           \
 +    0:XFAIL) col=$$red; res=XPASS;;                   \
 +    0:*)     col=$$grn; res=PASS ;;                   \
 +    77:*)    col=$$blu; res=SKIP ;;                   \
 +    99:*)    col=$$red; res=FAIL ;;                   \
 +    *:XFAIL) col=$$lgn; res=XFAIL;;                   \
 +    *:*)     col=$$red; res=FAIL ;;                   \
 +esac;                                                 \
 +echo "$${col}$$res$${std}: $$f";                      \
 +echo "$$res: $$f (exit: $$estatus)" |                 \
 +  $(am__rst_section) >$@;                             \
 +cat $@-t >>$@;                                                \
 +rm -f $@-t
 +
 +$(TEST_SUITE_LOG): $(TEST_LOGS)
 +      @$(am__sh_e_setup);                                             \
 +      list='$(TEST_LOGS)';                                            \
 +      results=`for f in $$list; do                                    \
 +                 read line < $$f && echo "$$line" || echo FAIL;       \
 +               done`;                                                 \
 +      all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[      ]*//'`; \
 +      fail=`echo "$$results" | grep -c '^FAIL'`;                      \
 +      pass=`echo "$$results" | grep -c '^PASS'`;                      \
 +      skip=`echo "$$results" | grep -c '^SKIP'`;                      \
 +      xfail=`echo "$$results" | grep -c '^XFAIL'`;                    \
 +      xpass=`echo "$$results" | grep -c '^XPASS'`;                    \
 +      failures=`expr $$fail + $$xpass`;                               \
 +      all=`expr $$all - $$skip`;                                      \
 +      if test "$$all" -eq 1; then tests=test; All=;                   \
 +      else tests=tests; All="All "; fi;                               \
 +      case fail=$$fail:xpass=$$xpass:xfail=$$xfail in                 \
 +        fail=0:xpass=0:xfail=0)                                       \
 +          msg="$$All$$all $$tests passed.  ";                         \
 +          exit=true;;                                                 \
 +        fail=0:xpass=0:xfail=*)                                       \
 +          msg="$$All$$all $$tests behaved as expected";               \
 +          if test "$$xfail" -eq 1; then xfailures=failure;            \
 +          else xfailures=failures; fi;                                \
 +          msg="$$msg ($$xfail expected $$xfailures).  ";              \
 +          exit=true;;                                                 \
 +        fail=*:xpass=0:xfail=*)                                       \
 +          msg="$$fail of $$all $$tests failed.  ";                    \
 +          exit=false;;                                                \
 +        fail=*:xpass=*:xfail=*)                                       \
 +          msg="$$failures of $$all $$tests did not behave as expected"; \
 +          if test "$$xpass" -eq 1; then xpasses=pass;                 \
 +          else xpasses=passes; fi;                                    \
 +          msg="$$msg ($$xpass unexpected $$xpasses).  ";              \
 +          exit=false;;                                                \
 +        *)                                                            \
 +            echo >&2 "incorrect case"; exit 4;;                               \
 +      esac;                                                           \
 +      if test "$$skip" -ne 0; then                                    \
 +        if test "$$skip" -eq 1; then                                  \
 +          msg="$$msg($$skip test was not run).  ";                    \
 +        else                                                          \
 +          msg="$$msg($$skip tests were not run).  ";                  \
 +        fi;                                                           \
 +      fi;                                                             \
 +      {                                                               \
 +        echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
 +          $(am__rst_title);                                           \
 +        echo "$$msg";                                                 \
 +        echo;                                                         \
 +        echo ".. contents:: :depth: 2";                               \
 +        echo;                                                         \
 +        for f in $$list; do                                           \
 +          read line < $$f;                                            \
 +          case $$line in                                              \
 +            SKIP:*|PASS:*|XFAIL:*);;                                  \
 +            *) echo; cat $$f;;                                        \
 +          esac;                                                       \
 +        done;                                                         \
 +      } >$(TEST_SUITE_LOG).tmp;                                       \
 +      mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
 +      if test -n '$(LAZY_TEST_SUITE)'; then                           \
 +        msg="$${msg}(tests were rerun lazily).  ";                    \
 +      fi;                                                             \
 +      if test "$$failures" -ne 0; then                                \
 +        msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG).  ";              \
 +        if test -n "$(PACKAGE_BUGREPORT)"; then                       \
 +          msg="$${msg}Please report to $(PACKAGE_BUGREPORT).  ";      \
 +        fi;                                                           \
 +      fi;                                                             \
 +      $(am__tty_colors);                                              \
 +      if $$exit; then                                                 \
 +        echo $(ECHO_N) "$$grn$(ECHO_C)";                              \
 +       else                                                           \
 +        echo $(ECHO_N) "$$red$(ECHO_C)";                              \
 +      fi;                                                             \
 +      echo "$$msg" | $(am__text_box);                                 \
 +      echo $(ECHO_N) "$$std$(ECHO_C)";                                \
 +      test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
 +      $$exit
 +
 +# Run all the tests.
 +check-TESTS:
 +      @list='$(TEST_LOGS)'; if test -z '$(LAZY_TEST_SUITE)'           \
 +        && test -n "$$list"; then                                     \
 +        rm -f $$list;                                                 \
 +      fi
 +      @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 +      @set_logs=; if test "X$(TEST_LOGS)" = X.log; then               \
 +        set_logs=TEST_LOGS=;                                          \
 +      fi;                                                             \
 +      $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) $$set_logs
 +
 +.log.html:
 +      @list='$(RST2HTML) $$RST2HTML rst2html rst2html.py';            \
 +      for r2h in $$list; do                                           \
 +        if ($$r2h --version) >/dev/null 2>&1; then                    \
 +          R2H=$$r2h;                                                  \
 +        fi;                                                           \
 +      done;                                                           \
 +      if test -z "$$R2H"; then                                        \
 +        echo >&2 "cannot find rst2html, cannot create $@";            \
 +        exit 2;                                                       \
 +      fi;                                                             \
 +      $$R2H $< >$@.tmp
 +      @mv $@.tmp $@
 +
 +# Be sure to run check-TESTS first, and then to convert the result.
 +# Beware of concurrent executions.  And expect check-TESTS to fail.
 +check-html:
 +      @if $(MAKE) $(AM_MAKEFLAGS) check-TESTS; then :; else   \
 +        rv=$$?;                                               \
 +        $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML);           \
 +        exit $$rv;                                            \
 +      fi
 +.test.log:
 +      @p='$<'; $(am__check_pre) "$$tst" $(am__check_post)
  
  distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          if test -d $$d/$$file; then \
            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file "$(distdir)$$dir" || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
            test -f "$(distdir)/$$file" \
            || cp -p $$d/$$file "$(distdir)/$$file" \
@@@ -1183,10 -1033,6 +1195,10 @@@ install-strip
          `test -z '$(STRIP)' || \
            echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
  mostlyclean-generic:
 +      -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
 +      -test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP)
 +      -test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML)
 +      -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
  
  clean-generic:
  
@@@ -1197,14 -1043,13 +1209,14 @@@ distclean-generic
  maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
 +      -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
  clean: clean-am
  
 -clean-am: clean-generic mostlyclean-am
 +clean-am: clean-generic clean-local mostlyclean-am
  
  distclean: distclean-am
        -rm -f Makefile
 -distclean-am: clean-am distclean-generic distclean-local
 +distclean-am: clean-am distclean-generic
  
  dvi: dvi-am
  
@@@ -1264,36 -1109,25 +1276,36 @@@ ps-am
  
  uninstall-am:
  
 -.MAKE: check-am install-am install-strip
 +.MAKE: check-TESTS check-am check-html install-am install-strip
  
 -.PHONY: all all-am check check-TESTS check-am clean clean-generic \
 -      distclean distclean-generic distclean-local distdir dvi dvi-am \
 -      html html-am info info-am install install-am install-data \
 -      install-data-am install-dvi install-dvi-am install-exec \
 -      install-exec-am install-html install-html-am install-info \
 -      install-info-am install-man install-pdf install-pdf-am \
 -      install-ps install-ps-am install-strip installcheck \
 -      installcheck-am installdirs maintainer-clean \
 +.PHONY: all all-am check check-TESTS check-am check-html clean \
 +      clean-generic clean-local distclean distclean-generic distdir \
 +      dvi dvi-am html html-am info info-am install install-am \
 +      install-data install-data-am install-dvi install-dvi-am \
 +      install-exec install-exec-am install-html install-html-am \
 +      install-info install-info-am install-man install-pdf \
 +      install-pdf-am install-ps install-ps-am install-strip \
 +      installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
        pdf-am ps ps-am uninstall uninstall-am
  
  
 -distclean-local: check-clean-local
 +$(srcdir)/parallel-tests.am: gen-parallel-tests Makefile.am
 +      (cd $(srcdir) && $(SHELL) ./gen-parallel-tests) >$@
 +
 +$(parallel_tests): $(parallel_tests:-p.test=.test) Makefile.am
 +      input=`echo $@ | sed 's,.*/,,; s,-p.test$$,.test,'`; \
 +      sed 's,^\. \./defs,. ./defs-p,' < $(srcdir)/$$input > $@
 +      chmod a+rx $@
 +
 +defs-p: defs Makefile.am
 +      sed 's,^AM_INIT_AUTOMAKE$$,&([parallel-tests]),' < defs >$@
 +
 +clean-local: check-clean-local
  
  check-clean-local:
        -chmod -R u+rwx *.dir
 -      -rm -rf *.dir
 +      -rm -rf defs-p *.dir
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
  # Otherwise a system limit (for SysV at least) may be exceeded.