automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.10b-36-


From: Ralf Wildenhues
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.10b-36-gef895ab
Date: Sun, 19 Apr 2009 07:50:37 +0000

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

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

The branch, master has been updated
       via  ef895abce45ac34eddff347c4507c73155f28e07 (commit)
       via  ad9df85096b88b2a75c8d1e004a5a896f2dd9125 (commit)
       via  00db19509be4d4e7b64d912e09b740e2e15e02f8 (commit)
       via  62796cb90bf2c7db7326923e31b654a1ca0681a4 (commit)
       via  6c4b250d8697a342fd9897e86d92ca10f67bb1ed (commit)
       via  4e9c77ba9ab740869da022ce973aec265bb90697 (commit)
       via  1cf482840169260b5480ec91e5d9461127e6bbb2 (commit)
       via  2c74a34058ecf5f0c07c3f0908a13613d465f956 (commit)
       via  2e959a815c6f144441a59761a2b4dc51d28ec776 (commit)
       via  ba6bb312dfcb711e4dc4b1839a3c05db04b55b44 (commit)
       via  0300229319efe127207981d453408092fa30d96c (commit)
       via  babf1633c7d53dc5de61c3456a03590e8a823e83 (commit)
       via  79f2c3e24840ff300b586159ce4e7fd4a20042b8 (commit)
       via  1692795d705d8c9f2dd6119122995bc62fb2ce7c (commit)
       via  b9d841f78fa84ceb347abeaaade069f12d150abb (commit)
       via  39e207f6dc6aacf9291edc2261c9ab95e19ec0cf (commit)
       via  dd8b2944b9217841c2c232c3f2794c3f6296e3a2 (commit)
       via  aea50a7d8a813dbda53a8fedec284cf7bf4221c2 (commit)
       via  40c3936593bd5fc35a13641ad031445d419e38bf (commit)
       via  79539c4e4ef61946213b9f0fe4dc0c8cedf7cebb (commit)
       via  fcf4d469717950e843ee181a96977f5b0fb51c3e (commit)
       via  68b7dc1d9413d84179f879eb6720a585039eb8b3 (commit)
       via  8085398209424be5a3c9e760d62d9c9f90aa06c1 (commit)
       via  d3dbeaf957214a5834a937bef9993bfd97bbc425 (commit)
       via  f4954f569194d0218ffa37fd5937b08bbd6db7d5 (commit)
       via  371b586076414c1cafce4c66ca80fa7fac313aa0 (commit)
       via  f5ddd3b0a9522ef9933fc04743e476c0c303e181 (commit)
       via  ffe14af2ac4103768fe8747c8d96200d6e82c200 (commit)
       via  8119e99b2171eec6b830c6cf278ec623a57424b6 (commit)
       via  72bae12c59bbb1669f9049c362aecd9b658705e0 (commit)
       via  dd363d928af3723f9817f578526b9120f2b74037 (commit)
       via  d5995c411f335e9eef6951c62ca16848ec2ed64f (commit)
       via  83460df1f5dff6a2a96e958d53117c8fe19a4ff8 (commit)
       via  b6bcc69d22d46f8ecfee9aba649d0f0547a24d91 (commit)
       via  1c503be3477330d01d4ff81548ae4c534822094e (commit)
       via  83b03f377b6b3614497d81e97fccd4fe59299811 (commit)
       via  fe936f644680510cf2a0b15ea2942c88204c9566 (commit)
       via  8f33eec4110c89f2963a4e3910c8149c59e63b23 (commit)
       via  c4e28424e75dd75620064fd9a918249857855877 (commit)
       via  1b67aa701d5d105dfbf0d2a4bb5ab70fbc0e5158 (commit)
       via  868fb04577daf9c47a4a2bcdd9a92cb78e6cf056 (commit)
       via  66c2dcaa51c7a1216053dc2dde2d704aa17deef6 (commit)
       via  df4f77d029cd7fe42722ab402bad105081d093b1 (commit)
       via  64b35b506420a7e9a00af47fe8d0c283759aa4f6 (commit)
       via  d4cc23b052fda663345c0ac634cc8f07bb6417bb (commit)
       via  8ec471e0dfd31d88e10622ceb8ecc074cc0fe8ab (commit)
       via  4c7f26e8cdc0ced0f19e1453b94f101e3b66340d (commit)
       via  67f40eda2c2b460ad42e64f01166f74e015ab604 (commit)
       via  9e741eebc802e98de2e8d1c5cc67ced64732caed (commit)
       via  f6cc7d0fa6ce0a0bb64c42f79f2a840f39aab7d2 (commit)
       via  642699970e75580e0f11f5786302082e25d8f49c (commit)
       via  5a17fc032e187e001b81958c9db1a7020ab66a5f (commit)
       via  53fd62bced5f60a77fc2d6973912a4007fae9b06 (commit)
       via  c67ad4d3b9c0e902ea4025d31c96648f5b715875 (commit)
       via  099f454e9cb59c654fd3c5805af377290b9333c2 (commit)
       via  c33683f0f738bb418d1d8548075065fe943ffb71 (commit)
       via  9aa1e525a4e192916ffe27d8ac1699c2a694cf6e (commit)
       via  26147eac793c51d14ec15d699c62c84b21b0f795 (commit)
       via  64942ddeb005bd7b8bce20ae42619b945d22b1c2 (commit)
       via  cae4a474fb343b28d3c8fa72f068f7dce8856693 (commit)
       via  c65e06621b259081fa79b900c2872c8df471f89f (commit)
       via  bee1af31a3e62086b4476ad491aacfecb4e149d8 (commit)
       via  b09961790e7e4f5f4f58e5b48464cbc5ad9e624f (commit)
       via  19e0c0ae4b457c0c32f43ac4cbc26dc9965b02a5 (commit)
       via  f04bfdf3e333e1ba15ab9ad02355aad503c28e48 (commit)
       via  a51f03728410166e827262b59f85f31f0419e69d (commit)
       via  e0bd4af16da88e4c2c61bde42675660eff7dff51 (commit)
       via  eb3d397f20a68410d4d25e372ae5f84500f2e506 (commit)
       via  ae4ab510f17e57b6a4998c590df7566fb47d73a9 (commit)
       via  da239edeee81b4794025de2d9370f733d3423a59 (commit)
       via  2749b1e73514dae4e506ec8922afb0fb05c25956 (commit)
      from  32386e0dc162a86ad7cfd4da3e021a3369129b99 (commit)

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

- Log -----------------------------------------------------------------
commit ef895abce45ac34eddff347c4507c73155f28e07
Merge: 32386e0dc162a86ad7cfd4da3e021a3369129b99 
ad9df85096b88b2a75c8d1e004a5a896f2dd9125
Author: Ralf Wildenhues <address@hidden>
Date:   Sun Apr 19 08:50:46 2009 +0200

    Merge branch 'next'
    
    * next: (64 commits)
      More minor fixups to vala support.
      Improve Vala support.
      testsuite: do not fail on systems without read permissions.
      testsuite: parallel make fixes.
      silent-rules reorganization, --enable-silent-rules switch.
      manual: Add note about parallelism and tests ordering.
      Fix maintainer-check failure.
      parallel-tests: more testsuite exposure.
      parallel-tests: let VERBOSE=yes output appear before summary.
      parallel-tests: `clean recheck' should not rerun all tests.
      parallel-tests: Fix driver for nonempty executable extension.
      Fix a couple of $(EXEEXT)-related testsuite failure.
      Document last change in NEWS.
      Fix renamed objects with subdir-objects and other languages.
      Do not remove texinfo outputs upon mostlyclean.
      testsuite: unset TESTS, TEST_LOGS, to avoid interference.
      testsuite: generate $(parallel_tests) just when needed.
      Remove superfluous line from recheck recheck-html.
      parallel-tests: redo check-html, recheck, recheck-html.
      parallel-tests: LOG_COMPILER for tests without known extension.
      ...

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

Summary of changes:
 ChangeLog                                    |  774 ++++++++++++++++++++++++
 Makefile.am                                  |   10 +-
 Makefile.in                                  |   14 +-
 NEWS                                         |   65 ++-
 README                                       |    8 +-
 THANKS                                       |    3 +
 aclocal.m4                                   |    2 +-
 automake.in                                  |  441 +++++++++++++--
 bootstrap                                    |    5 +
 configure                                    |   23 +-
 configure.ac                                 |    6 +-
 doc/Makefile.in                              |   45 +-
 doc/automake.texi                            |  810 +++++++++++++++++++++-----
 lib/Automake/ChannelDefs.pm                  |    5 +-
 lib/Automake/Makefile.in                     |    6 +-
 lib/Automake/Options.pm                      |   10 +-
 lib/Automake/Variable.pm                     |   20 +-
 lib/Automake/tests/.gitignore                |    2 +
 lib/Automake/tests/Makefile.am               |    7 +-
 lib/Automake/tests/Makefile.in               |  350 ++++++++----
 lib/Makefile.in                              |    6 +-
 lib/am/Makefile.am                           |    4 +-
 lib/am/Makefile.in                           |    8 +-
 lib/am/check.am                              |  262 +++++++++
 lib/am/{lex.am => check2.am}                 |   26 +-
 lib/am/configure.am                          |   12 +-
 lib/am/depend2.am                            |   35 +-
 lib/am/lex.am                                |    6 +-
 lib/am/library.am                            |    9 +-
 lib/am/ltlibrary.am                          |    5 +-
 lib/am/program.am                            |    2 +-
 lib/am/texinfos.am                           |   19 +-
 lib/am/{header.am => vala.am}                |    6 +-
 lib/am/yacc.am                               |    5 +-
 m4/Makefile.am                               |    6 +-
 m4/Makefile.in                               |   10 +-
 m4/amversion.m4                              |    6 +-
 m4/init.m4                                   |   15 +-
 m4/silent.m4                                 |   27 +
 m4/vala.m4                                   |   29 +
 tests/.gitignore                             |    5 +
 tests/Makefile.am                            |   59 ++-
 tests/Makefile.in                            |  432 ++++++++++----
 tests/README                                 |   37 +-
 tests/{check6.test => check11.test}          |   37 +-
 tests/check5.test                            |    4 +-
 tests/check8.test                            |   26 +-
 tests/check9.test                            |    4 +-
 tests/defs.in                                |   44 +-
 tests/dollarvar.test                         |   65 ++
 tests/{colneq.test => dollarvar2.test}       |   28 +-
 tests/{maken.test => flavor.test}            |   62 +-
 tests/gen-parallel-tests                     |   26 +
 tests/instdir-java.test                      |    3 +-
 tests/instfail-info.test                     |    5 +-
 tests/instfail-java.test                     |    4 +-
 tests/instfail-libtool.test                  |   19 +-
 tests/instfail.test                          |   18 +-
 tests/instmany-mans.test                     |    2 +-
 tests/instmany-python.test                   |    3 +-
 tests/instmany.test                          |    3 +-
 tests/libtoo10.test                          |    5 +-
 tests/lisp8.test                             |    6 +-
 tests/nobase.test                            |    5 +-
 tests/parallel-tests.test                    |  158 +++++
 tests/parallel-tests2.test                   |   88 +++
 tests/parallel-tests3.test                   |   84 +++
 tests/{check5.test => parallel-tests4.test}  |   61 ++-
 tests/{maken2.test => parallel-tests5.test}  |   67 ++-
 tests/{amsubst.test => parallel-tests6.test} |   26 +-
 tests/parallel-tests7.test                   |   91 +++
 tests/parallel-tests8.test                   |   75 +++
 tests/parallel-tests9.test                   |   86 +++
 tests/pr300-ltlib.test                       |    4 +-
 tests/silent.test                            |   92 +++
 tests/silent2.test                           |   94 +++
 tests/silent3.test                           |   95 +++
 tests/silent4.test                           |   98 +++
 tests/silent5.test                           |  162 +++++
 tests/silent6.test                           |  103 ++++
 tests/silent7.test                           |   95 +++
 tests/suffix13.test                          |   75 +++
 tests/txinfo18.test                          |    4 +-
 tests/txinfo33.test                          |  128 ++++
 tests/{extra8.test => vala.test}             |   41 +-
 tests/{extra8.test => vala1.test}            |   40 +-
 tests/vala2.test                             |   77 +++
 tests/vala3.test                             |  103 ++++
 tests/{extra8.test => vala4.test}            |   41 +-
 tests/vala5.test                             |   74 +++
 90 files changed, 5265 insertions(+), 803 deletions(-)
 create mode 100644 lib/Automake/tests/.gitignore
 copy lib/am/{lex.am => check2.am} (53%)
 copy lib/am/{header.am => vala.am} (83%)
 create mode 100644 m4/silent.m4
 create mode 100644 m4/vala.m4
 copy tests/{check6.test => check11.test} (69%)
 create mode 100755 tests/dollarvar.test
 copy tests/{colneq.test => dollarvar2.test} (65%)
 copy tests/{maken.test => flavor.test} (50%)
 create mode 100755 tests/gen-parallel-tests
 create mode 100755 tests/parallel-tests.test
 create mode 100755 tests/parallel-tests2.test
 create mode 100755 tests/parallel-tests3.test
 copy tests/{check5.test => parallel-tests4.test} (55%)
 copy tests/{maken2.test => parallel-tests5.test} (51%)
 copy tests/{amsubst.test => parallel-tests6.test} (70%)
 create mode 100755 tests/parallel-tests7.test
 create mode 100755 tests/parallel-tests8.test
 create mode 100755 tests/parallel-tests9.test
 create mode 100755 tests/silent.test
 create mode 100755 tests/silent2.test
 create mode 100755 tests/silent3.test
 create mode 100755 tests/silent4.test
 create mode 100755 tests/silent5.test
 create mode 100755 tests/silent6.test
 create mode 100755 tests/silent7.test
 create mode 100755 tests/suffix13.test
 create mode 100755 tests/txinfo33.test
 copy tests/{extra8.test => vala.test} (52%)
 copy tests/{extra8.test => vala1.test} (50%)
 create mode 100755 tests/vala2.test
 create mode 100755 tests/vala3.test
 copy tests/{extra8.test => vala4.test} (55%)
 create mode 100755 tests/vala5.test

diff --git a/ChangeLog b/ChangeLog
index 7d8a116..15adab4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,6 +26,516 @@
        * lib/Automake/ChannelDefs.pm: Likewise.
        * tests/ext2.test: Likewise.
 
+2009-04-19  Ralf Wildenhues  <address@hidden>
+
+       More minor fixups to vala support.
+       * automake.in (lang_vala_finish_target): Fix typo in comment.
+       * doc/automake.texi (Vala Support): Fix typo.  Declare vala
+       support as "initial".
+       * NEWS: Likewise, declare vala support as "initial".
+
+2009-04-05  Jürg Billeter  <address@hidden>
+
+       Improve Vala support.
+       * automake.in: Update to Vala 0.7.0 semantics, recover from removal
+       of built sources, support silent-rules, drop _PKGNAME variables
+       * doc/automake.texi, NEWS: Update.
+       * lib/am/vala.am: Bump copyright years.
+       * m4/vala.m4: Likewise.
+       * tests/vala.test: Remove obsolete grep tests.
+       * tests/vala1.test: Likewise.
+       * tests/vala2.test: Test full build, distcheck, and distclean.
+       * tests/vala3.test: Likewise, also test with subdir-objects.
+       * tests/vala4.test: Bump copyright years.
+       * tests/vala5.test: New test for per-target flags, expected to fail.
+       * tests/Makefile.am: Update.
+       * THANKS: Update.
+
+2008-10-10  Ralf Wildenhues  <address@hidden>
+
+       Minor fixups for Vala support.
+       * automake.in: $(VALAFLAGS) comes after $(AM_VALAFLAGS).
+       * doc/automake.texi (Vala Support): Add some references,
+       document AM_VALAFLAGS, streamline a bit.
+       * lib/am/vala.am: Copyright blurb.
+       * m4/vala.m4 (AM_PROG_VALAC): Rewrite using AS_VERSION_COMPARE.
+       * tests/vala.test: Fix minor nits.
+       * tests/vala1.test: Likewise.
+       * tests/vala2.test: Likewise.
+       * tests/vala3.test: Likewise.
+       * tests/vala4.test: New test, for version argument of
+       AM_PROG_VALAC.
+       * tests/Makefile.am: Update.
+
+2008-10-09  Mathias Hasselmann  <address@hidden>
+
+       * automake.in: Support Vala in non-recursive builds. Make sure
+       foo_VALAFLAGS really use used. Inject --library switch when building
+       Vala libraries.
+       * doc/automake.texi, NEWS: Document Vala support.
+       * m4/vala.m4: Rename AC_PROG_VALAC to AM_PROG_VALAC.
+       * tests/Makefile.am: Additional Vala tests.
+       * tests/vala.test: Also test VALAFLAGS support.
+       * tests/vala1.test: Test non-recursive Vala support.
+       * tests/vala2.test: Test _PKGNAME variables.
+       * tests/vala3.test: Test compiling of C code generated by Vala.
+
+2008-10-09  Mathias Hasselmann  <address@hidden>
+
+       Initial support for the vala programming language.
+       * automake.in: Add %known_libraries, lang_vala_rewrite,
+       lang_vala_finish and lang_vala_target_hook to support the Vala
+       programming language. Register Vala language hooks.
+       * lib/am/vala.am: Empty rules file to prevent creation of depend2
+       based rules for Vala code.
+       * lib/am/Makefile.am (dist_am_DATA): Add vala.am.
+       * m4/vala.m4: Provide AC_PROG_VALAC for detecting the Vala compiler.
+       * m4/Makefile.am (dist_m4data_DATA): Add vala.m4.
+       * tests/vala.test: Test Vala support.
+       * tests/Makefile.am: Update.
+
+2009-04-14  Ralf Wildenhues  <address@hidden>
+
+       testsuite: do not fail on systems without read permissions.
+       * tests/instfail-info.test: Do not use the `non-root'
+       requirement for testing whether files may be made unreadable;
+       instead use `test -r' and skip the test if that still works.
+       * tests/instfail-java.test: Likewise.
+       * tests/instfail-libtool.test: Likewise.
+       * tests/instfail.test: Likewise.
+       * tests/instmany-mans.test: Likewise.
+       * tests/instmany-python.test: Likewise.
+       * tests/instmany.test: Likewise.
+       * tests/parallel-tests9.test: Likewise.
+
+       testsuite: parallel make fixes.
+       This patch fixes a couple of testsuite bugs exposed with
+       `MAKE=make\ -jN make check'.
+       * tests/libtoo10.test: Do not run `clean' in same $MAKE
+       invocation as `all check'.  Fixes test failure with parallel
+       NetBSD `make -jN'.
+       * tests/nobase.test: Be sure to create a directory before
+       creating files in it.  Fixes test failure with MAKE=`make -jN'
+       for NetBSD make.  This issue is hidden with parallel GNU make
+       due to its parallel breadth first update order.
+       * tests/parallel-tests3.test: Skip if $MAKE contains `-j',
+       GNU make will use the environment variable $MAKE for recursion
+       and thus run in parallel even if `$MAKE -j1' was used on the
+       command line in the test.  Also, after running the test proper,
+       wait long enough so that background jobs have finished and there
+       are no open files left when the cleanup code runs.
+
+2009-04-13  Ralf Wildenhues  <address@hidden>
+
+       silent-rules reorganization, --enable-silent-rules switch.
+       This patch introduces a configure-time option to set the default
+       verbosity.  Since configure now needs to know whether the
+       `silent-rules' automake option was set, the latter can only be
+       set within AM_INIT_AUTOMAKE, or with a new AM_SILENT_RULES macro
+       but not any more through AUTOMAKE_OPTIONS or the automake
+       command line option `--silent-rules'.
+       * automake.in (define_verbose_var): Define the default verbose
+       variable in terms of `$(AM_DEFAULT_VERBOSITY)'.
+       (handle_configure): Do not pass `--silent-rules' to automake.
+       (scan_autoconf_traces): Trace `AM_SILENT_RULES'.  If seen,
+       enable global `silent-rules' option.
+       (usage): Do not document `--silent-rules'.
+       (parse_arguments): Do not accept `--silent-rules'.
+       * doc/automake.texi (Options): Overhaul.  Document
+       AM_SILENT_RULES, --enable-silent-rules, --disable-silent-rules,
+       AM_DEFAULT_VERBOSITY.  Show an example for user-added variables
+       for less verbose output.
+       (Invoking Automake): Remove documentation for `--silent-rules'.
+       (Public Macros): Document `AM_SILENT_RULES'.
+       * NEWS: Update.
+       * lib/Automake/Options.pm (_process_option_list): Accept
+       `silent-rules' only as option in configure.ac.
+       * m4/init.m4 (AM_INIT_AUTOMAKE): If the `silent-rules' option
+       was enabled, require `AM_SILENT_RULES'; move AM_BACKSLASH
+       initialization to ...
+       * m4/silent.m4 (AM_SILENT_RULES): ... this new file, new macro.
+       Deal with `--enable-silent-rules' switch; define
+       AM_DEFAULT_VERBOSITY.
+       * m4/Makefile.am (dist_m4data_DATA): Add silent.m4.
+       * tests/dollarvar.test: Remove tests for `--silent-rules', use
+       `AM_SILENT_RULES'.
+       * tests/flavor.test: Remove test for `--silent-rules'.
+       * tests/silent.test: Use `AM_SILENT_RULES' instead of
+       `AUTOMAKE_OPTIONS = silent-rules'; use `--enable-silent-rules'.
+       * tests/silent2.test: Likewise.
+       * tests/silent3.test: Likewise.
+       * tests/silent4.test: Likewise.
+       * tests/silent5.test: Likewise.
+       * tests/silent6.test: Likewise. Test `AM_SILENT_RULES' as well
+       as `AM_INIT_AUTOMAKE([silent-rules])' instead of
+       `--silent-rules'.
+       * tests/silent7.test: Use `AM_SILENT_RULES' instead of
+       `AUTOMAKE_OPTIONS = silent-rules'; ensure the latter is rejected.
+       Test combinations of --enable-silent-rules and
+       --disable-silent-rules with `make V=0' and `make V=1'.
+       Suggestion for configure-time switch by Bob Friesenhahn.
+
+       manual: Add note about parallelism and tests ordering.
+       * doc/automake.texi (Simple Tests using parallel-tests):
+       Dependencies between test logs work for tests with known
+       extensions only.  Hint that tests should be prepared to be run
+       in parallel.
+
+       Fix maintainer-check failure.
+       * tests/suffix13.test: Use Exit not exit.
+
+2009-04-10  Ralf Wildenhues  <address@hidden>
+
+       parallel-tests: more testsuite exposure.
+       * tests/parallel-tests.test: Also test overriding TEST_LOGS and
+       TESTS.
+
+       parallel-tests: let VERBOSE=yes output appear before summary.
+       * lib/am/check.am ($(TEST_SUITE_LOG)): In `VERBOSE=yes' mode,
+       output contents of `$(TEST_SUITE_LOG)' before, rather than after
+       the test suite summary.  This ensures that the email address
+       appears near the end of the output; also, the log file already
+       starts with a result summary anyway.
+
+       parallel-tests: `clean recheck' should not rerun all tests.
+       * lib/am/check.am (recheck, recheck-html): Do not rerun all
+       tests if `$(TEST_SUITE_LOG)' does not exist.
+       * tests/parallel-tests2.test: Adjust recheck test.
+       * tests/parallel-tests9.test: Adjust recheck-html test.
+       * NEWS: Update.
+       Suggestion by Akim Demaille.
+
+2009-04-08  Ralf Wildenhues  <address@hidden>
+           Eric Blake <address@hidden>
+
+       parallel-tests: Fix driver for nonempty executable extension.
+       * automake.in (handle_tests): New substitution `%am__EXEEXT%',
+       defined as 'FALSE' for non-generic rules, or if no programs are
+       built at all.  Otherwise, define it as configure conditional.
+       * lib/am/check2.am [%am__EXEEXT%] (%EXT%$(EXEEXT).log): New
+       conditional generic rule.
+       * m4/init.m4: Hook an m4_provide of `_AM_COMPILER_EXEEXT' onto
+       Autoconf's `_AC_COMPILER_EXEEXT' macro.
+       (AM_INIT_AUTOMAKE): If `_AM_COMPILER_EXEEXT' has been provided
+       at `AC_CONFIG_COMMANDS_PRE' time, then introduce a conditional
+       `am__EXEEXT', defined to true iff `$EXEEXT' is nonempty.
+       * tests/check5.test: Only match `_EXEEXT_[1-9]' here, to avoid
+       false positives stemming from address@hidden@'.
+       * NEWS: Update.
+
+2009-04-08  Ralf Wildenhues  <address@hidden>
+
+       Fix a couple of $(EXEEXT)-related testsuite failure.
+       * tests/check8.test: Allow executable extensions in test suite
+       output.
+       * tests/check9.test: Add `$(EXEEXT)' manually to @substituted@
+       XFAIL_TESTS entries.
+
+       * NEWS: Update for last patch.
+
+2009-04-07  Florian Briegel  <address@hidden>  (tiny change)
+           Stepan Kasal  <address@hidden>
+           Ralf Wildenhues  <address@hidden>
+
+       Fix renamed objects with subdir-objects and other languages.
+       * automake.in: Fixed bug when building with renamed objects
+       and foreign languages.
+       * tests/suffix13.test: New test.
+       * tests/Makefile.am: Adjust.
+       * THANKS: Update.
+       Reports by Florian Briegel and Stepan Kasal.
+
+2009-04-07  Ralf Wildenhues  <address@hidden>
+
+       Do not remove texinfo outputs upon mostlyclean.
+       * lib/am/texinfos.am: New substitutions %MOSTLYCLEAN%,
+       %MAINTCLEAN%.
+       (clean-aminfo): New target, remove %TEXICLEAN% if nonemtpy,
+       declare phony.  Hook this target to ...
+       (clean-am): ... this and ...
+       (?CYGNUS?clean-info): ... this.
+       (maintainer-clean-aminfo): Remove %MAINTCLEAN% if nonempty,
+       for later.
+       (mostlyclean-aminfo): Remove %MOSTLYCLEAN%.
+       * automake.in (handle_texinfo_helper): Return three arrays
+       $MOSTLYCLEAN, $TEXICLEAN, $MAINTCLEAN, instead of one array.
+       Only put LaTeX helper files in $MOSTLYCLEAN, the rest in
+       $TEXICLEAN for now.
+       (handle_texinfo): Accept these, chop off extra newline, and
+       substitute them in `texinfos.am'.
+       * NEWS: Update.
+       * tests/txinfo33.test: New test.
+       * tests/Makefile.am: Update.
+       Report by Bruno Haible.
+
+2009-04-06  Ralf Wildenhues  <address@hidden>
+
+       testsuite: unset TESTS, TEST_LOGS, to avoid interference.
+       * tests/defs.in: Unset TESTS, TEST_LOGS.
+
+       testsuite: generate $(parallel_tests) just when needed.
+       * tests/Makefile.am (check_SCRIPTS): No need to list
+       $(parallel_tests) here, they can be generated as needed during
+       the test run, following our recommendation in the manual.
+
+       Remove superfluous line from recheck recheck-html.
+       * lib/am/check.am (recheck recheck-html): Remove superfluous
+       line, introduced bogusly in last commit.
+
+2009-04-06  Akim Demaille  <address@hidden>
+           Ralf Wildenhues  <address@hidden>
+
+       parallel-tests: redo check-html, recheck, recheck-html.
+       * lib/am/check.am (recheck, recheck-am): Remove.
+       (recheck-TESTS): Rename to ...
+       (recheck): ... this and rewrite, factored ...
+       (recheck-html): ... with this rule.  Pass TEST_LOGS rather than
+       RECHECK_LOGS to `check' and `check-html', respectively, to avoid
+       running outdated tests.  Invoking the public macros ensures
+       `check_SCRIPTS' etc. are created in time.  Do not output errors
+       for tests that were not run yet.  If the testsuite has not run
+       at all, run all tests.
+       (check-html): Run `check' target, not `check-TESTS', to ensure
+       `check_SCRIPTS' etc. are created in time.
+       (.PHONY, .MAKE, AM_RECURSIVE_TARGETS): Adjust contents.
+       * tests/parallel-tests2.test: Expose the check-html and
+       recheck-html issues.
+       * tests/parallel-tests9.test: Expose the recheck issues.
+       Bugs in previous version pointed out by Akim, who already had
+       them fixed in his original version.
+
+2009-04-04  Ralf Wildenhues  <address@hidden>
+
+       parallel-tests: LOG_COMPILER for tests without known extension.
+       * automake.in (handle_tests): If we don't match a known
+       extension, define `LOG_COMPILER' as `$(LOG_COMPILE)
+       $(AM_LOG_FLAGS) $(LOG_FLAGS)' and use it as %COMPILE% in check2.
+       * doc/automake.texi (Simple Tests using parallel-tests):
+       Document it.  In the examples, suggest using the AM_*LOG_FLAGS
+       flags in Makefile.am rather than the variables without `AM_'
+       prefix.
+       * lib/Automake/tests/Makefile.am (AM_PL_LOG_FLAGS): Renamed from
+       (PL_LOG_FLAGS): ... this variable, intended for the user.
+       * tests/parallel-tests7.test: Extend test.
+       * NEWS: Update.
+       Suggestion by Akim Demaille.
+
+       More node renaming in the manual.
+       * doc/automake.texi (Top): Adjust menu to ...
+       (API Versioning): ... this node being renamed from ...
+       (API versioning): ... this, and ...
+       (Wildcards): ... this being renamed from ...
+       (wildcards): ... this.
+       Report by Karl Berry.
+
+2009-04-03  Andreas Schwab  <address@hidden>
+
+       * tests/instdir-java.test: Don't require gcj.  Skip if javac is
+       not available.
+
+2009-04-01  Ralf Wildenhues  <address@hidden>
+
+       Fix testsuite failures due to nonexistent `dirlist' entries.
+       * tests/defs.in: When parsing `$aclocaldir/dirlist', only add
+       existing directories D to aclocal `-I D' flags, as aclocal
+       errors on nonexisting directories.
+       Report and analysis by Andreas Schwab.
+
+2009-03-31  Akim Demaille  <address@hidden>
+
+       Fix typo in manual.
+       * doc/automake.texi (Simple Tests using parallel-tests): Fix
+       typo.
+
+2009-03-31  Jim Meyering  <address@hidden>
+
+       Avoid test failure due to paranoid TAR_OPTIONS envvar setting.
+       * tests/txinfo18.test: Don't let a TAR_OPTIONS=--keep-old-files
+       environment variable setting cause test failure.  Fixed in
+       texi2dvi 4.13.
+
+       Use more common spelling in diagnostic: s/canonic/canonical/.
+       * automake.in (check_typos): s/canonic/canonical/.
+
+2009-03-31  Ralf Wildenhues  <address@hidden>
+
+       * configure.ac, NEWS: Bump version to 1.10c.
+
+2009-03-29  Ralf Wildenhues  <address@hidden>
+
+       * configure.ac, NEWS: Bump version to 1.10b.
+       * doc/automake.texi (Releases): Add statistics for 1.10b.
+
+       * NEWS: Minor update.
+
+       Reorganize nodes in the manual.
+       Avoid texinfo sectioning commands without nodes, by either
+       introducing new nodes along with menus, or using headings
+       commands.  Adjust all references.
+       * doc/automake.texi: Throughout the manual, adjust references to
+       new or changed node names.  Rename `non-configured' to
+       `unconfigured', capitalize headings and section names better.
+       (Top): List new menus and nodes introduced below.
+       (Length Limitations): Renamed from ...
+       (Length limitations): ... this.
+       (aclocal Options): Renamed from ...
+       (aclocal options): ... this.
+       (Macro Search Path): Renamed from ...
+       (Macro search path): ... this.  Rename subsubsections to
+       subsubheadings.
+       (Public Macros, Obsolete Macros, Private Macros): Renamed from
+       (Public macros, Obsolete macros, Private macros): ... these.
+       (Conditional Subdirectories): Introduce sub menu and split ...
+       (SUBDIRS vs DIST_SUBDIRS, Subdirectories with AM_CONDITIONAL)
+       (Subdirectories with AC_SUBST, Unconfigured Subdirectories):
+       ... into these new nodes.  Adjust subsection names to node
+       names.
+       (Conditional Sources): Rename subsubsections to subsubheadings.
+       (Conditional Programs): Likewise.
+       (Program Variables): Renamed from ...
+       (Program variables): ... this.
+       (Libtool Issues): Introduce sub menu and split into ...
+       (Required file ltmain.sh not found)
+       (Objects created both with libtool and without): ... these new
+       nodes.
+       (Other Objects, Built Sources): Renamed from ...
+       (Other objects, Built sources): ... these.
+       (Built Sources Example): Renamed from ...
+       (Built sources example): this.  Rename unnumberedsubsecs to
+       subsubheadings.
+       (Man Pages): Renamed from ...
+       (Man pages): ... this.
+       (Install): Introduce sub menu and split into ...
+       (Basics of Installation, The Two Parts of Install)
+       (Extending Installation, Staged Installs)
+       (Install Rules for the User): ... these new nodes.
+       (Dist): Introduce sub menu and split into ...
+       (Basics of Distribution, Fine-grained Distribution Control)
+       (The dist Hook, Checking the Distribution)
+       (The Types of Distributions): ... these new nodes.
+       (Tests): Introduce sub menu and split into ...
+       (Simple Tests, Simple Tests using parallel-tests, DejaGnu Tests)
+       (Install Tests): ... these new nodes.
+       (Conditionals): Move the portability paragraph up, introduce sub
+       menu and split into ...
+       (Usage of Conditionals, Limits of Conditionals): ... these new
+       nodes.  Link to several sections throughout the manual that deal
+       with specific usage of conditionals.
+       (CVS): Rename subsections to subheadings.
+       (maintainer-mode): Likewise.
+       (Limitations on File Names): Renamed from ...
+       (limitations on file names): ... this.
+       (Flag Variables Ordering): Rename subsections to subheadings.
+       (Renamed Objects): Renamed from ...
+       (Renamed objects): ... this.
+       (Dependency Tracking Evolution): Introduce sub menu and split
+       into ...
+       (First Take on Dependencies, Dependencies As Side Effects)
+       (Dependencies for the User, Techniques for Dependencies)
+       (Recommendations for Tool Writers)
+       (Future Directions for Dependencies): ... these new nodes.
+       Report by Karl Berry.
+
+2009-03-29  Ralf Wildenhues  <address@hidden>
+
+       Update AM_RECURSIVE_TARGETS for parallel-tests.
+       * lib/am/check.am [PARALLEL_TESTS] (AM_RECURSIVE_TARGETS):
+       Add check, recheck, check-html, recheck-html.
+
+2009-03-29  Ralf Wildenhues  <address@hidden>
+           Akim Demaille  <address@hidden>
+
+       parallel-tests: New target recheck-html.
+       * lib/am/check.am [PARALLEL_TESTS] (recheck-html): New phony,
+       recursive target.  Factor common implementation with
+       `check-html'.
+       * doc/automake.texi (Tests): Document recheck-html.
+       * tests/parallel-tests2.test: Test it.
+
+2009-03-28  Ralf Wildenhues  <address@hidden>
+           Akim Demaille  <address@hidden>
+
+       parallel-tests: redo lazy checking: recheck and RECHECK_LOGS.
+       Replace the LAZY_TEST_SUITE API with a simpler yet more powerful
+       one: RECHECK_LOGS specifies those tests which are to be removed
+       in any case before testing.  Provide a `recheck' convenience
+       target to set RECHECK_LOGS to all failed and unexpectedly passed
+       tests.  Document several ways to limit the set of tests run.
+       * lib/am/check.am [PARALLEL_TESTS] (RECHECK_LOGS): New variable,
+       default to $(TESTS_LOGS).
+       (check-TESTS): Remove $(RECHECK_LOGS) not $(TEST_LOGS).  Drop use
+       of LAZY_TEST_SUITE.
+       ($(TEST_SUITE_LOG)): Do not output note about lazy rerun, as
+       LAZY_TEST_SUITE is gone.
+       (recheck): New target.
+       (recheck-am, recheck-TESTS): New internal targets.
+       * doc/automake.texi (Tests): Update @vindex for TESTS and
+       TEST_LOGS.  Replace description of LAZY_TEST_SUITE with a list
+       of ways the set of tests to be run can be modified.  Document
+       RECHECK_LOGS and the recheck target.
+       * tests/defs.in: Unset RECHECK_LOGS not LAZY_TEST_SUITE.
+       * tests/parallel-tests.test: Adjust, replacing LAZY_TEST_SUITE
+       with corresponding RECHECK_LOGS settings.
+       * tests/parallel-tests9.test: New tests.
+       * tests/Makefile.am: Update.
+       Suggestion and different implementation by Akim Demaille.
+
+       parallel-tests: do not mark check-TESTS as `.MAKE'.
+       * lib/am/check.am [PARALLEL_TESTS] (.MAKE): Remove check-TESTS.
+       This rule removes files, which should not be executed with BSD
+       `make -n'.
+
+       parallel-tests: warn about $(srcdir), $(top_srcdir) in TESTS.
+       * automake.in (handle_tests): Warn about portability issue
+       concerning generated TESTS files listed with a `$(srcdir)/'
+       or `$(top_srcdir)/' prefix.
+       * doc/automake.texi (TESTS): Document this issue.  Mention that
+       the parallel-tests driver is still experimental.
+       * tests/parallel-tests8.test: New test.
+       * tests/Makefile.am: Update.
+
+       check-html: Always create HTML output, note conversion failure.
+       * lib/am/check.am (check-html): Create `$(TEST_SUITE_HTML)' in
+       any case.  Exit unsuccessfully if HTML creation failed.
+       * tests/parallel-tests2.test: Amend test to expose this.
+
+2009-03-24  Ralf Wildenhues  <address@hidden>
+
+       parallel-tests: per-extension test driver: <EXT>_LOG_COMPILER.
+       For test files with extension <ext>, introduce the internal
+       variable <EXT>_LOG_COMPILE, which expands to
+       $(<EXT>_LOG_COMPILER) $(AM_<EXT>_LOG_FLAGS) $(<EXT>_LOG_FLAGS).
+       Turn also the lib/Automake/tests testsuite over to the new
+       test driver.
+       * doc/automake.texi (Tests): Document `EXT_LOG_COMPILER' and
+       `EXT_LOG_FLAGS'.
+       * lib/am/check2.am: Insert `%COMPILE%' right before test.
+       * automake.in (handle_tests): Substitute `COMPILE' for check2,
+       empty for tests without extension, and `$(ext_LOG_COMPILE)' for
+       extension `ext'.  In the latter case, define it from the public
+       components.
+       * configure.ac (AM_INIT_AUTOMAKE): Use `parallel-test' globally.
+       * tests/Makefile.am (AUTOMAKE_OPTIONS): Remove, not needed here
+       any more.
+       * lib/Automake/tests/Makefile.am (TESTS_ENVIRONMENT): Split ...
+       (PL_LOG_COMPILER, PL_LOG_FLAGS): ... into these new variables.
+       (TESTS_EXTENSIONS): New variable, initialize to `.pl'.
+       * tests/parallel-tests7.test: New test.
+       * tests/Makefile.am: Update.
+       Suggestion by Akim Demaille.
+
+2009-03-22  Ralf Wildenhues  <address@hidden>
+
+       parallel-tests: also record logs of SKIPped tests.
+       * lib/am/check.am [PARALLEL_TESTS] ($(TEST_SUITE_LOG)): Record
+       SKIPs as well.
+       Suggested by Jim Meyering.
+
+       Minor optimization in parallel-tests text box creation.
+       * lib/am/check.am [PARALLEL-TESTS] (am__text_box): Use only one
+       awk invocation, rather than several tools, to create a text box.
+       Suggestion from Akim Demaille.
+
 2009-03-29  Ralf Wildenhues  <address@hidden>
 
        Rewrite maintainer-check in separate tests, parallelizable.
@@ -147,6 +657,270 @@
        * lib/am/tags.am [%?SUBDIRS%] (AM_RECURSIVE_TARGETS):
        Likewise.
 
+2009-03-11  Ralf Wildenhues  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
+           Jim Meyering  <address@hidden>
+           Benoit Sigoure  <address@hidden>
+           Ralf Wildenhues  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
+
+       `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  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
+           Ralf Wildenhues  <address@hidden>
+
+       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  <address@hidden>
+
+       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  <address@hidden>
 
        * NEWS: Update.
diff --git a/Makefile.am b/Makefile.am
index 7b738ca..af9147b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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
@@ -364,16 +364,16 @@ sc_tests_required_after_defs:
 
 ## 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 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; \
diff --git a/Makefile.in b/Makefile.in
index baffd76..34193e8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -305,15 +305,15 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
        @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 \
@@ -1033,8 +1033,8 @@ sc_tests_overriding_macros_on_cmdline:
          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; \
diff --git a/NEWS b/NEWS
index 6b94a7c..2c69e46 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,52 @@
-New in 1.10a:
+New in 1.10c:
+
+* Languages changes:
+
+  - There is initial support for the Vala programming language, when using
+    Vala 0.7.0 or later.
+
+* Miscellaneous Changes:
+
+  - In 1.10b, the `parallel-tests' driver introduced per-extension test
+    driver variables `<EXT>_LOG_COMPILER', defined as
+
+      $(<EXT>_LOG_COMPILE) $(AM_<EXT>_LOG_FLAGS) $(<EXT>_LOG_FLAGS)
+
+    for extensions `.ext' registered in `TEST_EXTENSIONS'.  Now, for tests
+    without a known extension, add `LOG_COMPILER', defined as
+
+      $(LOG_COMPILE) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+
+    to the rules.
+
+  - The new `parallel-tests' targets `recheck' and `recheck-html' will not run
+    any tests that have not run yet.
+
+  - The `silent-rules' mode introduces a configure-time `--enable-silent-rules'
+    option to specify the default build verbosity; it can still be overridden
+    with an explicit `make V=[0|1]'.  The configure switch necessitated to
+    remove the automake command-line switch `--silent-rules' and 
per-Makefile.am
+    settings `AUTOMAKE_OPTIONS = silent-rules', so the feature needs to be
+    enabled in configure.ac now, either by adding the `silent-rules' option
+    to `AM_INIT_AUTOMAKE', or by calling the new `AM_SILENT_RULES' macro.
+
+Bugs fixed in 1.10c:
+
+* Long standing bugs:
+
+  - Texinfo dvi, ps, pdf, and html output files are not removed upon
+    `make mostlyclean' any more; only the LaTeX by-products are.
+
+  - Renamed objects also work with the `subdir-objects' option and
+    source file languages which Automake does not know itself.
+
+* Bugs introduced by 1.10:
+
+  - The `parallel-tests' driver also works on systems with a nonempty
+    executable extension, such as Windows.
+
+
+New in 1.10b:
 
 * Version requirements:
 
@@ -116,6 +164,19 @@ New in 1.10a:
 
   - 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, inter-test dependencies, lazy test execution
+    for unit-testing, 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.
 
@@ -143,7 +204,7 @@ New in 1.10a:
     undocumented variables may be used in several documented macros such
     as $(AUTOCONF) or $(MAKEINFO).
 
-Bugs fixed in 1.10a:
+Bugs fixed in 1.10b:
 
 * Long standing bugs:
 
diff --git a/README b/README
index bb42a7f..0e23237 100644
--- a/README
+++ b/README
@@ -24,13 +24,7 @@ Automake has a test suite.  Use
        make check
 
 to run it.  Capture its output in case of failing tests.  For more
-information, you can influence testing with the variables VERBOSE,
-MAKE, TESTS, keep_testdirs.  So for example, to run tests/check.test
-verbosely using gmake and to inspect the test directory afterwards,
-enter the tests directory and use
-
-       env VERBOSE=yes TESTS=check.test keep_testdirs=yes MAKE=gmake \
-         gmake -e check
+information, please see the file tests/README.
 
 Automake has a page on the web.  See:
 
diff --git a/THANKS b/THANKS
index c041fbb..3bac751 100644
--- a/THANKS
+++ b/THANKS
@@ -98,6 +98,7 @@ Erik Lindahl          address@hidden
 Esben Haabendal Soerensen address@hidden
 Ezra Peisach           address@hidden
 Flavien Astraud                address@hidden
+Florian Briegel                address@hidden
 Francesco Salvestrini  address@hidden
 François Pinard               address@hidden
 Fred Fish              address@hidden
@@ -165,6 +166,7 @@ Juergen A. Erhard   address@hidden
 Juergen Keil           address@hidden
 Juergen Leising                address@hidden
 Julien Sopena          address@hidden
+Jürg Billeter         address@hidden
 Karl Berry             address@hidden
 Karl Heuer             address@hidden
 Kelley Cook            address@hidden
@@ -203,6 +205,7 @@ Martin Frydl                address@hidden
 Martin Waitz           address@hidden
 Mathias Doreille       address@hidden
 Mathias Froehlich      address@hidden
+Mathias Hasselmann     address@hidden
 Matt Leach             address@hidden
 Matthew D. Langston    address@hidden
 Matthias Andree                address@hidden
diff --git a/aclocal.m4 b/aclocal.m4
index bdd6e71..d085be5 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.10a -*- Autoconf -*-
+# generated automatically by aclocal 1.10c -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
diff --git a/automake.in b/automake.in
index 3549bdb..d494907 100755
--- a/automake.in
+++ b/automake.in
@@ -88,6 +88,9 @@ struct (# Short name of the language (c, f77...).
        # 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)).
@@ -112,7 +115,7 @@ sub finish ($)
   my ($self) = @_;
   if (defined $self->_finish)
     {
-      &{$self->_finish} ();
+      &{$self->_finish} (@_);
     }
 }
 
@@ -569,6 +572,7 @@ my @dist_targets;
 # Keep track of all programs declared in this Makefile, without
 # $(EXEEXT).  @substitutions@ are not listed.
 my %known_programs;
+my %known_libraries;
 
 # Keys in this hash are the basenames of files which must depend on
 # ansi2knr.  Values are either the empty string, or the directory in
@@ -699,6 +703,7 @@ sub initialize_per_input ()
     @dist_targets = ();
 
     %known_programs = ();
+    %known_libraries= ();
 
     %de_ansi_files = ();
 
@@ -729,6 +734,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',
@@ -749,6 +755,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',
@@ -767,6 +774,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',
@@ -784,6 +792,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',
@@ -802,12 +811,29 @@ register_language ('name' => 'header',
                   # Nothing to do.
                   '_finish' => sub { });
 
+# Vala
+register_language ('name' => 'vala',
+                  'Name' => 'Vala',
+                  'config_vars' => ['VALAC'],
+                  'flags' => ['VALAFLAGS'],
+                  'compile' => '$(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS)',
+                  'ccer' => 'VALAC',
+                  'compiler' => 'VALACOMPILE',
+                  'extensions' => ['.vala'],
+                  'output_extensions' => sub { (my $ext = $_[0]) =~ s/vala$/c/;
+                                               return ($ext,) },
+                  'rule_file' => 'vala',
+                  '_finish' => \&lang_vala_finish,
+                  '_target_hook' => \&lang_vala_target_hook,
+                  'nodist_specific' => 1);
+
 # Yacc (C & C++).
 register_language ('name' => 'yacc',
                   '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/;
@@ -821,6 +847,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'],
@@ -837,6 +864,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/;
@@ -850,6 +878,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/;
@@ -868,6 +897,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',
@@ -884,6 +914,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',
@@ -900,6 +931,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',
@@ -917,6 +949,7 @@ 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',
@@ -935,6 +968,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',
@@ -966,6 +1000,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',
@@ -985,6 +1020,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',
@@ -1001,6 +1037,7 @@ register_language ('name' => 'java',
                   'autodep' => 'GCJ',
                   'flags' => ['GCJFLAGS'],
                   'compile' => '$(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS)',
+                  'ccer' => 'GCJ',
                   'compiler' => 'GCJCOMPILE',
                   'compile_flag' => '-c',
                   'output_flag' => '-o',
@@ -1093,6 +1130,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 . '_', '$(' . $pvar . 
'_$(AM_DEFAULT_VERBOSITY))', 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
@@ -1113,6 +1233,10 @@ sub handle_options
        }
     }
 
+  # Override portability-recursive warning.
+  switch_warning ('no-portability-recursive')
+    if option 'silent-rules';
+
   if ($strictness == GNITS)
     {
       set_option ('readme-alpha', INTERNAL);
@@ -1252,6 +1376,9 @@ sub handle_languages
          (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,
@@ -1263,6 +1390,8 @@ sub handle_languages
                         SUBDIROBJ     => 0,
                         'DERIVED-EXT' => 'BUG',
                         DIST_SOURCE   => 1,
+                        VERBOSE   => $verbose,
+                        SILENT    => $silent,
                        );
 
        # Generate the appropriate rules for this extension.
@@ -1360,8 +1489,9 @@ sub handle_languages
            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.
@@ -1482,6 +1612,8 @@ sub handle_languages
                             OBJOBJ    => "$obj.obj",
                             LTOBJ     => "$obj.lo",
 
+                            VERBOSE   => $verbose,
+                            SILENT    => $silent,
                             COMPILE   => $obj_compile,
                             LTCOMPILE => $obj_ltcompile,
                             -o        => $output_flag,
@@ -1540,6 +1672,9 @@ sub handle_languages
          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');
 }
 
 
@@ -1802,7 +1937,16 @@ sub handle_single_transform ($$$$$%)
            {
                my $obj_sans_ext = substr ($object, 0,
                                           - length ($this_obj_ext));
-               my $full_ansi = $full;
+               my $full_ansi;
+               if ($directory ne '')
+                 {
+                       $full_ansi = $directory . '/' . $base . $extension;
+                 }
+               else
+                 {
+                       $full_ansi = $base . $extension;
+                 }
+
                if ($lang->ansi && option 'ansi2knr')
                  {
                    $full_ansi =~ s/$KNOWN_EXTENSIONS_PATTERN$/\$U$&/;
@@ -2508,7 +2652,8 @@ sub handle_programs
       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.
@@ -2521,6 +2666,7 @@ sub handle_programs
                                       PROGRAM  => $one_file,
                                       XPROGRAM => $xname,
                                       XLINK    => $xlink,
+                                      VERBOSE  => $vlink,
                                       DIRSTAMP => $dirstamp,
                                       EXEEXT   => '$(EXEEXT)');
 
@@ -2559,6 +2705,7 @@ sub handle_libraries
 
   &define_variable ('AR', 'ar', INTERNAL);
   &define_variable ('ARFLAGS', 'cru', INTERNAL);
+  &define_verbose_tagvar ('AR');
 
   foreach my $pair (@liblist)
     {
@@ -2577,6 +2724,8 @@ sub handle_libraries
               . "did you mean `$suggestion'?")
        }
 
+      ($known_libraries{$onelib} = $bn) =~ s/\.a$//;
+
       $where->push_context ("while processing library `$onelib'");
       $where->set (INTERNAL->get);
 
@@ -2618,9 +2767,13 @@ sub handle_libraries
       # 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);
@@ -2778,6 +2931,8 @@ sub handle_ltlibraries
               . "did you mean `$suggestion'?")
        }
 
+      ($known_libraries{$onelib} = $bn) =~ s/\.la$//;
+
       $where->push_context ("while processing Libtool library `$onelib'");
       $where->set (INTERNAL->get);
 
@@ -2807,7 +2962,8 @@ sub handle_ltlibraries
                                             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)";
@@ -2857,6 +3013,7 @@ sub handle_ltlibraries
                                       XLTLIBRARY => $xlib,
                                       RPATH      => $rpath,
                                       XLINK      => $xlink,
+                                      VERBOSE    => $vlink,
                                       DIRSTAMP   => $dirstamp);
       if ($seen_libobjs)
        {
@@ -2886,7 +3043,7 @@ sub check_typos ()
            {
              $varname =~ /^(?:nobase_)?(?:dist_|nodist_)?(.*)_[[:alnum:]]+$/;
              msg_var ('syntax', $var, "variable `$varname' is defined but no"
-                      . " program or\nlibrary has `$1' as canonic name"
+                      . " program or\nlibrary has `$1' as canonical name"
                       . " (possible typo)")
                unless $var->rdef ($cond)->seen;
            }
@@ -3093,7 +3250,7 @@ sub output_texinfo_build_rules ($$$@)
 }
 
 
-# $TEXICLEANS
+# ($MOSTLYCLEAN, $TEXICLEAN, $MAINTCLEAN)
 # handle_texinfo_helper ($info_texinfos)
 # --------------------------------------
 # Handle all Texinfo source; helper for handle_texinfo.
@@ -3103,7 +3260,7 @@ sub handle_texinfo_helper ($)
   my (@infobase, @info_deps_list, @texi_deps);
   my %versions;
   my $done = 0;
-  my @texi_cleans;
+  my (@mostly_cleans, @texi_cleans, @maint_cleans) = ('', '', '');
 
   # Build a regex matching user-cleaned files.
   my $d = var 'DISTCLEANFILES';
@@ -3134,7 +3291,7 @@ sub handle_texinfo_helper ($)
       my ($out_file, $vtexi, @clean_files) =
        scan_texinfo_file ("$relative_dir/$texi")
        or next;
-      push (@texi_cleans, @clean_files);
+      push (@mostly_cleans, @clean_files);
 
       # If the Texinfo source is in a subdirectory, create the
       # resulting info in this subdirectory.  If it is in the current
@@ -3377,7 +3534,9 @@ sub handle_texinfo_helper ($)
        }
     }
 
-  return makefile_wrap ("", "\t  ", @texi_cleans);
+  return (makefile_wrap ("", "\t  ", @mostly_cleans),
+         makefile_wrap ("", "\t  ", @texi_cleans),
+         makefile_wrap ("", "\t  ", @maint_cleans));
 }
 
 
@@ -3391,14 +3550,20 @@ sub handle_texinfo ()
   reject_var 'html_TEXINFOS', "HTML generation not yet supported";
 
   my $info_texinfos = var ('info_TEXINFOS');
-  my $texiclean = "";
+  my ($mostlyclean, $clean, $maintclean) = ('', '', '');
   if ($info_texinfos)
     {
-      $texiclean = handle_texinfo_helper ($info_texinfos);
+      ($mostlyclean, $clean, $maintclean) = handle_texinfo_helper 
($info_texinfos);
+      chomp $mostlyclean;
+      chomp $clean;
+      chomp $maintclean;
     }
+
   $output_rules .=  file_contents ('texinfos',
                                   new Automake::Location,
-                                  TEXICLEAN     => $texiclean,
+                                  MOSTLYCLEAN   => $mostlyclean,
+                                  TEXICLEAN     => $clean,
+                                  MAINTCLEAN    => $maintclean,
                                   'LOCAL-TEXIS' => !!$info_texinfos);
 }
 
@@ -4048,6 +4213,9 @@ 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' 
: '');
+
   $output_rules .= file_contents
     ('configure',
      new Automake::Location,
@@ -4057,12 +4225,10 @@ sub handle_configure ($$$@)
      '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 '.')
     {
@@ -4747,13 +4913,119 @@ sub handle_tests
     {
       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 = '';
+         my $handle_exeext = exists $configure_vars{'EXEEXT'};
+         if ($handle_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 ($handle_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 =~ /address@hidden@$/;
+               $obj =~ s/\$\(EXEEXT\)$//o;
+
+               if ($val =~ /(\$\((top_)?srcdir\))\//o)
+                 {
+                   msg ('error', $subvar->rdef ($cond)->location,
+                        "parallel-tests: using `$1' in TESTS is currently 
broken: `$val'");
+                 }
+
+               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';
+               my $compile = 'LOG_COMPILE';
+               define_variable ($compile,
+                                '$(LOG_COMPILER) $(AM_LOG_FLAGS) 
$(LOG_FLAGS)', INTERNAL);
+               $output_rules .= file_contents ('check2', new 
Automake::Location,
+                                               GENERIC => 0,
+                                               OBJ => $obj,
+                                               SOURCE => $val,
+                                               COMPILE =>'$(' . $compile . ')',
+                                               EXT => '',
+                                               am__EXEEXT => 'FALSE');
+               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++;
+             if ($test_suffix ne $at_exeext && $test_suffix ne '')
+               {
+                 (my $ext = $test_suffix) =~ s/^\.//;
+                 $ext = uc $ext;
+                 my $compile = $ext . '_LOG_COMPILE';
+                 define_variable ($compile,
+                                  '$(' . $ext . '_LOG_COMPILER) $(AM_' .  $ext 
. '_LOG_FLAGS)'
+                                  . ' $(' . $ext . '_LOG_FLAGS)', INTERNAL);
+                 my $am_exeext = $handle_exeext ? 'am__EXEEXT' : 'FALSE';
+                 $output_rules .= file_contents ('check2', new 
Automake::Location,
+                                                 GENERIC => 1,
+                                                 OBJ => '',
+                                                 SOURCE => '$<',
+                                                 COMPILE => '$(' . $compile . 
')',
+                                                 EXT => $test_suffix,
+                                                 am__EXEEXT => $am_exeext);
+               }
+           }
+
+         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;
+       }
     }
 }
 
@@ -4956,6 +5228,7 @@ sub scan_autoconf_traces ($)
                AM_INIT_AUTOMAKE => 0,
                AM_MAINTAINER_MODE => 0,
                AM_PROG_CC_C_O => 0,
+               AM_SILENT_RULES => 0,
                _AM_SUBST_NOTMAKE => 1,
                _AM_COND_IF => 1,
                _AM_COND_ELSE => 1,
@@ -5149,6 +5422,10 @@ sub scan_autoconf_traces ($)
        {
          $seen_cc_c_o = $where;
        }
+      elsif ($macro eq 'AM_SILENT_RULES')
+        {
+         set_global_option ('silent-rules', $where);
+       }
       elsif ($macro eq '_AM_COND_IF')
         {
          cond_stack_if ('', $args[1], $where);
@@ -5483,6 +5760,15 @@ sub lang_header_rewrite
     return LANG_IGNORE;
 }
 
+# Rewrite a single Vala source file.
+sub lang_vala_rewrite
+{
+    my ($directory, $base, $ext) = @_;
+
+    (my $newext = $ext) =~ s/vala$/c/;
+    return (LANG_SUBDIR, $newext);
+}
+
 # Rewrite a single yacc file.
 sub lang_yacc_rewrite
 {
@@ -5641,6 +5927,84 @@ sub lang_c_finish
     }
 }
 
+sub lang_vala_finish_target ($$)
+{
+  my ($self, $name) = @_;
+
+  my $derived = canonicalize ($name);
+  my $varname = $derived . '_SOURCES';
+  my $var = var ($varname);
+
+  if ($var)
+    {
+      foreach my $file ($var->value_as_list_recursive)
+        {
+          $output_rules .= "$file: ${derived}_vala.stamp\n".
+            "address@hidden test -f \$@; then :; else \\\n".
+            "\t  rm -f ${derived}_vala.stamp; \\\n".
+            "\t  \$(MAKE) \$(AM_MAKEFLAGS) ${derived}_vala.stamp; \\\n".
+            "\tfi\n"
+            if $file =~ s/(.*)\.vala$/$1.c/;
+        }
+    }
+
+  my $compile = $self->compile;
+
+  # Rewrite each occurrence of `AM_$flag' in the compile
+  # rule into `${derived}_$flag' if it exists.
+  for my $flag (@{$self->flags})
+    {
+      my $val = "${derived}_$flag";
+      $compile =~ s/\(AM_$flag\)/\($val\)/
+        if set_seen ($val);
+    }
+
+  my $dirname = dirname ($name);
+
+  # Only generate C code, do not run C compiler
+  $compile .= " -C";
+
+  my $verbose = verbose_flag ('VALAC');
+  my $silent = silent_flag ();
+
+  $output_rules .=
+    "${derived}_vala.stamp: \$(${derived}_SOURCES)\n".
+    "\t${verbose}${compile} \$(${derived}_SOURCES)\n".
+    "\t${silent}touch address@hidden";
+
+  push_dist_common ("${derived}_vala.stamp");
+
+  $clean_files{"${derived}_vala.stamp"} = MAINTAINER_CLEAN;
+}
+
+# Add output rules to invoke valac and create stamp file as a witness
+# to handle multiple outputs. This function is called after all source
+# file processing is done.
+sub lang_vala_finish
+{
+  my ($self) = @_;
+
+  foreach my $prog (keys %known_programs)
+    {
+      lang_vala_finish_target ($self, $prog);
+    }
+
+  while (my ($name) = each %known_libraries)
+    {
+      lang_vala_finish_target ($self, $name);
+    }
+}
+
+# The built .c files should be cleaned only on maintainer-clean
+# as the .c files are distributed. This function is called for each
+# .vala source file.
+sub lang_vala_target_hook
+{
+  my ($self, $aggregate, $output, $input, %transform) = @_;
+
+  $clean_files{$output} = MAINTAINER_CLEAN;
+}
+
 # This is a yacc helper which is called whenever we have decided to
 # compile a yacc file.
 sub lang_yacc_target_hook
@@ -6124,11 +6488,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');
 }
 
 
@@ -6145,12 +6513,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 ($$)
@@ -6174,8 +6546,9 @@ 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;
     }
 
@@ -6193,11 +6566,11 @@ sub define_per_target_linker_variable ($$)
 
   # 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);
 }
 
 ################################################################
@@ -8011,7 +8384,7 @@ 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,
      'v|verbose'       => sub { setup_channel 'verb', silent => 0; },
      'W|warnings=s'     => \&parse_warnings,
      # These long options (--Werror and --Wno-error) for backward
diff --git a/bootstrap b/bootstrap
index 8437d11..cb563ca 100755
--- a/bootstrap
+++ b/bootstrap
@@ -124,6 +124,11 @@ dosubst m4/amversion.in m4/amversion.m4
 # Create temporary replacement for automake
 dosubst automake.in automake.tmp
 
+# Create tests/parallel-tests.am.
+cd tests
+$BOOTSTRAP_SHELL ./gen-parallel-tests > parallel-tests.am
+cd ..
+
 # Run the autotools.
 $PERL ./aclocal.tmp -I m4
 autoconf
diff --git a/configure b/configure
index 2cb3c0c..e73a0bd 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for GNU Automake 1.10a.
+# Generated by GNU Autoconf 2.63 for GNU Automake 1.10c.
 #
 # Report bugs to <address@hidden>.
 #
@@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='GNU Automake'
 PACKAGE_TARNAME='automake'
-PACKAGE_VERSION='1.10a'
-PACKAGE_STRING='GNU Automake 1.10a'
+PACKAGE_VERSION='1.10c'
+PACKAGE_STRING='GNU Automake 1.10c'
 PACKAGE_BUGREPORT='address@hidden'
 
 ac_unique_file="automake.in"
@@ -1239,7 +1239,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU Automake 1.10a to adapt to many kinds of systems.
+\`configure' configures GNU Automake 1.10c to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1308,7 +1308,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU Automake 1.10a:";;
+     short | recursive ) echo "Configuration of GNU Automake 1.10c:";;
    esac
   cat <<\_ACEOF
 
@@ -1375,7 +1375,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU Automake configure 1.10a
+GNU Automake configure 1.10c
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1389,7 +1389,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU Automake $as_me 1.10a, which was
+It was created by GNU Automake $as_me 1.10c, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -1846,7 +1846,7 @@ am_AUTOCONF="${AUTOCONF-autoconf}"
 am_AUTOHEADER="${AUTOHEADER-autoheader}"
 
 
-am__api_version='1.10a'
+am__api_version='1.10c'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2296,7 +2296,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='automake'
- VERSION='1.10a'
+ VERSION='1.10c'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2959,6 +2959,7 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 
+
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
@@ -3280,7 +3281,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU Automake $as_me 1.10a, which was
+This file was extended by GNU Automake $as_me 1.10c, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -3330,7 +3331,7 @@ Report bugs to <address@hidden>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-GNU Automake config.status 1.10a
+GNU Automake config.status 1.10c
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/configure.ac b/configure.ac
index 7073d6a..4229d68 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 
 # Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2004, 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
@@ -16,7 +16,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([GNU Automake], [1.10a], address@hidden)
+AC_INIT([GNU Automake], [1.10c], address@hidden)
 
 AC_CONFIG_SRCDIR(automake.in)
 AC_CONFIG_AUX_DIR(lib)
@@ -29,7 +29,7 @@ AC_CANONICAL_BUILD
 AC_SUBST([am_AUTOCONF], ["${AUTOCONF-autoconf}"])
 AC_SUBST([am_AUTOHEADER], ["${AUTOHEADER-autoheader}"])
 
-AM_INIT_AUTOMAKE([1.10a dist-bzip2 filename-length-max=99 color-tests])
+AM_INIT_AUTOMAKE([1.10a dist-bzip2 filename-length-max=99 color-tests 
parallel-tests])
 
 # The API version is the base version.  We must guarantee
 # compatibility for all releases with the same API version.
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 37faf51..8495fd1 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -238,9 +238,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
@@ -415,8 +415,11 @@ mostlyclean-aminfo:
          automake.fn automake.fns automake.ky automake.kys \
          automake.log automake.op automake.pg automake.pgs \
          automake.tmp automake.toc automake.tp automake.tps \
-         automake.tr automake.vr automake.vrs automake.dvi \
-         automake.pdf automake.ps automake.html
+         automake.tr automake.vr automake.vrs
+
+clean-aminfo:
+       -test -z "automake.dvi automake.pdf automake.ps automake.html" \
+       || rm -rf automake.dvi automake.pdf automake.ps automake.html
 
 maintainer-clean-aminfo:
        @list='$(INFO_DEPS)'; for i in $$list; do \
@@ -612,7 +615,7 @@ maintainer-clean-generic:
        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-am
 
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-aminfo clean-generic mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
@@ -759,21 +762,21 @@ uninstall-man: uninstall-man1
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       ctags dist-info distclean distclean-generic distclean-tags \
-       distdir dvi dvi-am html html-am info info-am install \
-       install-am install-data install-data-am install-dist_docDATA \
-       install-dvi install-dvi-am install-exec install-exec-am \
-       install-html install-html-am install-info install-info-am \
-       install-man install-man1 install-pdf install-pdf-am install-ps \
-       install-ps-am install-strip installcheck installcheck-am \
-       installdirs maintainer-clean maintainer-clean-aminfo \
-       maintainer-clean-generic maintainer-clean-vti mostlyclean \
-       mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
-       pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-dist_docDATA uninstall-dvi-am uninstall-html-am \
-       uninstall-info-am uninstall-man uninstall-man1 \
-       uninstall-pdf-am uninstall-ps-am
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-aminfo \
+       clean-generic ctags dist-info distclean distclean-generic \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-dist_docDATA install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-man1 install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am tags \
+       uninstall uninstall-am uninstall-dist_docDATA uninstall-dvi-am \
+       uninstall-html-am uninstall-info-am uninstall-man \
+       uninstall-man1 uninstall-pdf-am uninstall-ps-am
 
 $(dist_man1_MANS): $(top_srcdir)/configure.ac
 $(srcdir)/aclocal.1 $(srcdir)/automake.1:
diff --git a/doc/automake.texi b/doc/automake.texi
index c5ac962..7b18cf4 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -101,7 +101,7 @@ section entitled address@hidden Free Documentation 
License.''
 * configure::                   Scanning configure.ac or configure.in
 * Directories::                 Declaring subdirectories
 * Programs::                    Building programs and libraries
-* Other objects::               Other derived objects
+* Other Objects::               Other derived objects
 * Other GNU Tools::             Other GNU Tools
 * Documentation::               Building documentation
 * Install::                     What gets installed
@@ -117,7 +117,7 @@ section entitled address@hidden Free Documentation 
License.''
 * Cygnus::                      The effect of @option{--cygnus}
 * Not Enough::                  When Automake is not Enough
 * Distributing::                Distributing the Makefile.in
-* API versioning::              About compatibility between Automake versions
+* API Versioning::              About compatibility between Automake versions
 * Upgrading::                   Upgrading to a Newer Automake Version
 * FAQ::                         Frequently Asked Questions
 * History::                     Notes about the history of Automake
@@ -161,7 +161,7 @@ General ideas
 * Strictness::                  Standards conformance checking
 * Uniform::                     The Uniform Naming Scheme
 * Canonicalization::            How derived variables are named
-* Length limitations::          Staying below the command line length limit
+* Length Limitations::          Staying below the command line length limit
 * User Variables::              Variables reserved for the user
 * Auxiliary Programs::          Programs automake might require
 
@@ -179,8 +179,8 @@ Scanning @file{configure.ac}
 
 Auto-generating aclocal.m4
 
-* aclocal options::             Options supported by aclocal
-* Macro search path::           How aclocal finds .m4 files
+* aclocal Options::             Options supported by aclocal
+* Macro Search Path::           How aclocal finds .m4 files
 * Extending aclocal::           Writing your own aclocal macros
 * Local Macros::                Organizing local macros
 * Serials::                     Serial lines in Autoconf macros
@@ -188,9 +188,9 @@ Auto-generating aclocal.m4
 
 Autoconf macros supplied with Automake
 
-* Public macros::               Macros that you can use.
-* Obsolete macros::             Macros that you should stop using.
-* Private macros::              Macros that you should not use.
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that you should stop using.
+* Private Macros::              Macros that you should not use.
 
 Directories
 
@@ -199,6 +199,13 @@ Directories
 * Alternative::                 Subdirectories without recursion
 * Subpackages::                 Nesting packages
 
+Conditional Subdirectories
+
+* SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
+* Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
+* Subdirectories with AC_SUBST::  Another way for conditional recursion
+* Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
+
 Building Programs and Libraries
 
 * A Program::                   Building a program
@@ -208,7 +215,7 @@ Building Programs and Libraries
                                 library builds
 * Default _SOURCES::            Default source files
 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
-* Program variables::           Variables used when building a program
+* Program Variables::           Variables used when building a program
 * Yacc and Lex::                Yacc and Lex support
 * C++ Support::                 Compiling C++ sources
 * Objective C Support::         Compiling Objective C sources
@@ -217,6 +224,7 @@ Building Programs and Libraries
 * Fortran 77 Support::          Compiling Fortran 77 sources
 * Fortran 9x Support::          Compiling Fortran 9x sources
 * Java Support::                Compiling Java sources
+* Vala Support::                Compiling Vala sources
 * Support for Other Languages::  Compiling other languages
 * ANSI::                        Automatic de-ANSI-fication (obsolete)
 * Dependencies::                Automatic dependency tracking
@@ -262,9 +270,9 @@ Other Derived Objects
 * Data::                        Architecture-independent data files
 * Sources::                     Derived sources
 
-Built sources
+Built Sources
 
-* Built sources example::       Several ways to handle built sources.
+* Built Sources Example::       Several ways to handle built sources.
 
 Other GNU Tools
 
@@ -277,7 +285,30 @@ Other GNU Tools
 Building documentation
 
 * Texinfo::                     Texinfo
-* Man pages::                   Man pages
+* Man Pages::                   Man pages
+
+Installation
+
+* Basics of Installation::      What gets installed where
+* The Two Parts of Install::    Installing data and programs separately
+* Extending Installation::      Adding your own rules for installation
+* Staged Installs::             Installation in a temporary location
+* Install Rules for the User::  Useful additional rules
+
+Distribution
+
+* Basics of Distribution::      Files distributed by default
+* Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
+* The dist Hook::               A target for last-minute distribution changes
+* Checking the Distribution::   @samp{make distcheck} explained
+* The Types of Distributions::  A variety of formats and compression methods
+
+Support for Test Suites
+
+* Simple Tests::                Listing programs and scripts in @code{TESTS}
+* Simple Tests using parallel-tests::  More powerful test driver
+* DejaGnu Tests::               Interfacing with the external testing framework
+* Install Tests::               Running tests on installed packages
 
 Miscellaneous Rules
 
@@ -285,6 +316,11 @@ Miscellaneous Rules
 * Suffixes::                    Handling new file extensions
 * Multilibs::                   Support for multilibs.
 
+Conditionals
+
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
+
 When Automake Isn't Enough
 
 * Extending::                   Adding new rules or overriding existing ones.
@@ -294,11 +330,11 @@ Frequently Asked Questions about Automake
 
 * CVS::                         CVS and generated files
 * maintainer-mode::             missing and AM_MAINTAINER_MODE
-* wildcards::                   Why doesn't Automake support wildcards?
-* limitations on file names::   Limitations on source and installed file names
+* Wildcards::                   Why doesn't Automake support wildcards?
+* Limitations on File Names::   Limitations on source and installed file names
 * distcleancheck::              Files left in build directory after distclean
 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
-* renamed objects::             Why are object files sometimes renamed?
+* Renamed Objects::             Why are object files sometimes renamed?
 * Per-Object Flags::            How to simulate per-object flags?
 * Multiple Outputs::            Writing rules for tools with many output files
 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
@@ -309,6 +345,15 @@ History of Automake
 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
 * Releases::                    Statistics about Automake Releases
 
+Dependency Tracking Evolution
+
+* First Take on Dependencies::  Precomputed dependency tracking
+* Dependencies As Side Effects::  Update at developer compile time
+* Dependencies for the User::   Update at user compile time
+* Techniques for Dependencies:: Alternative approaches
+* Recommendations for Tool Writers::  What tool writers can do to help
+* Future Directions for Dependencies::  Languages Automake does not know
+
 Copying This Manual
 
 * GNU Free Documentation License::  License for copying this manual
@@ -927,8 +972,8 @@ provided earlier (@pxref{Standard Directory Variables}), 
all the
 variables based on @var{exec-prefix} designate architecture-dependent
 directories whose files will be installed by @code{make install-exec}.
 The others designate architecture-independent directories and will
-serve files installed by @code{make install-data}.  @xref{Install},
-for more details.
+serve files installed by @code{make install-data}.  @xref{The Two Parts
+of Install}, for more details.
 
 Here is how we could revisit our two-host installation example,
 assuming that (1) we want to install the package directly in
@@ -1043,7 +1088,7 @@ options.
 @cindex Programs, renaming during installation
 
 The GNU Build System provides means to automatically rename
-executables and manpages before they are installed (@pxref{Man pages}).
+executables and manpages before they are installed (@pxref{Man Pages}).
 This is especially convenient
 when installing a GNU package on a system that already has a
 proprietary implementation you do not want to overwrite.  For instance,
@@ -1183,8 +1228,8 @@ being erased by @code{make clean}, or even @code{VPATH} 
builds not
 working).
 
 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
address@hidden distcheck}.  @xref{Dist}, for more information about
address@hidden
address@hidden distcheck}.  @xref{Checking the Distribution}, for more
+information about @code{distcheck}.
 
 @node Dependency Tracking
 @subsection Automatic Dependency Tracking
@@ -1689,7 +1734,7 @@ understand how Automake works.
 * Strictness::                  Standards conformance checking
 * Uniform::                     The Uniform Naming Scheme
 * Canonicalization::            How derived variables are named
-* Length limitations::          Staying below the command line length limit
+* Length Limitations::          Staying below the command line length limit
 * User Variables::              Variables reserved for the user
 * Auxiliary Programs::          Programs automake might require
 @end menu
@@ -1977,10 +2022,10 @@ Some primaries also allow additional prefixes that 
control other
 aspects of @command{automake}'s behavior.  The currently defined prefixes
 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
 These prefixes are explained later (@pxref{Program and Library Variables})
-(@pxref{Man pages}).
+(@pxref{Man Pages}).
 
 
address@hidden Length limitations
address@hidden Length Limitations
 @section Staying below the command line length limit
 
 @cindex command line length limit
@@ -2017,10 +2062,10 @@ data2_DATA = address@hidden @dots{} address@hidden
 
 @noindent
 and will cause Automake to treat the two lists separately during
address@hidden install}.  See @ref{Install} for choosing directory names
-that will keep the ordering of the two parts of installation
-(@pxref{Two-Part Install}).  Note that @code{make dist} may still
-only work on a host with a higher length limit in this example.
address@hidden install}.  See @ref{The Two Parts of Install} for choosing
+directory names that will keep the ordering of the two parts of
+installation Note that @code{make dist} may still only work on a host
+with a higher length limit in this example.
 
 Automake itself employs a couple of strategies to avoid long command
 lines.  For example, when @address@hidden@}/} is prepended to file
@@ -2562,6 +2607,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
@@ -2924,7 +2971,7 @@ This introduces an Automake conditional 
(@pxref{Conditionals}).
 This macro allows @code{automake} to detect subsequent access within
 @file{configure.ac} to a conditional previously introduced with
 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
-(@pxref{Conditionals}).
+(@pxref{Usage of Conditionals}).
 
 @item AM_GNU_GETTEXT
 This macro is required for packages that use GNU gettext
@@ -2994,7 +3041,7 @@ aclocal}).  You can also use it to maintain your own set 
of custom
 macros (@pxref{Local Macros}).
 
 At startup, @command{aclocal} scans all the @file{.m4} files it can
-find, looking for macro definitions (@pxref{Macro search path}).  Then
+find, looking for macro definitions (@pxref{Macro Search Path}).  Then
 it scans @file{configure.ac}.  Any mention of one of the macros found
 in the first step causes that macro, and any macros it in turn
 requires, to be put into @file{aclocal.m4}.
@@ -3033,16 +3080,16 @@ called conditionally).  @command{autom4te} is expected 
to be in the
 overridden using the @env{AUTOM4TE} environment variable.
 
 @menu
-* aclocal options::             Options supported by aclocal
-* Macro search path::           How aclocal finds .m4 files
+* aclocal Options::             Options supported by aclocal
+* Macro Search Path::           How aclocal finds .m4 files
 * Extending aclocal::           Writing your own aclocal macros
 * Local Macros::                Organizing local macros
 * Serials::                     Serial lines in Autoconf macros
 * Future of aclocal::           aclocal's scheduled death
 @end menu
 
address@hidden aclocal options
address@hidden aclocal options
address@hidden aclocal Options
address@hidden aclocal Options
 
 @cindex @command{aclocal}, Options
 @cindex Options, @command{aclocal}
@@ -3145,8 +3192,8 @@ way as it is for @command{automake} (@pxref{Invoking 
Automake}).
 
 @end table
 
address@hidden Macro search path
address@hidden Macro search path
address@hidden Macro Search Path
address@hidden Macro Search Path
 
 @cindex Macro search path
 @cindex @command{aclocal} search path
@@ -3166,7 +3213,7 @@ configured when @command{automake} itself is built.  This 
is
 @file{@@datadir@@/aclocal/}, which typically
 expands to @address@hidden@}/share/aclocal/}.  To find the compiled-in
 value of @var{acdir}, use the @option{--print-ac-dir} option
-(@pxref{aclocal options}).
+(@pxref{aclocal Options}).
 @end table
 
 As an example, suppose that @command{automake-1.6.2} was configured with
@@ -3177,10 +3224,10 @@ As an example, suppose that @command{automake-1.6.2} 
was configured with
 @item @file{/usr/local/share/aclocal/}
 @end enumerate
 
-As explained in (@pxref{aclocal options}), there are several options that
+As explained in (@pxref{aclocal Options}), there are several options that
 can be used to change or extend this search path.
 
address@hidden Modifying the macro search path: @option{--acdir}
address@hidden Modifying the Macro Search Path: @option{--acdir}
 
 The most erroneous option to modify the search path is
 @address@hidden, which changes default directory and
@@ -3194,10 +3241,10 @@ drops the @var{APIVERSION} directory.  For example, if 
one specifies
 This option, @option{--acdir}, is intended for use by the internal
 Automake test suite only; it is not ordinarily needed by end-users.
 
address@hidden Modifying the macro search path: @samp{-I @var{dir}}
address@hidden Modifying the Macro Search Path: @samp{-I @var{dir}}
 
 Any extra directories specified using @option{-I} options
-(@pxref{aclocal options}) are @emph{prepended} to this search list.  Thus,
+(@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
 @samp{aclocal -I /foo -I /bar} results in the following search path:
 
 @enumerate
@@ -3207,7 +3254,7 @@ Any extra directories specified using @option{-I} options
 @item @var{acdir}
 @end enumerate
 
address@hidden Modifying the macro search path: @file{dirlist}
address@hidden Modifying the Macro Search Path: @file{dirlist}
 @cindex @file{dirlist}
 
 There is a third mechanism for customizing the search path.  If a
@@ -3429,7 +3476,7 @@ do not really care about the rebuild rules, you should 
define
 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
 that @code{m4_include}s any file from @file{m4/} that defines a
 required macro.  Macros not found locally will still be searched in
-system-wide directories, as explained in @ref{Macro search path}.
+system-wide directories, as explained in @ref{Macro Search Path}.
 
 Custom macros should be distributed for the same reason that
 @file{configure.ac} is: so that other people have all the sources of
@@ -3592,8 +3639,8 @@ with serial 1.
 
 @noindent
 Because both files have the same serial number, @command{aclocal} uses
-the first it found in its search path order (@pxref{Macro search
-path}).  @command{aclocal} therefore ignores
+the first it found in its search path order (@pxref{Macro Search
+Path}).  @command{aclocal} therefore ignores
 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
 
@@ -3699,15 +3746,15 @@ Automake ships with several Autoconf macros that you 
can use from your
 @command{aclocal} in @file{aclocal.m4}.
 
 @menu
-* Public macros::               Macros that you can use.
-* Obsolete macros::             Macros that you should stop using.
-* Private macros::              Macros that you should not use.
+* Public Macros::               Macros that you can use.
+* Obsolete Macros::             Macros that you should stop using.
+* Private Macros::              Macros that you should not use.
 @end menu
 
 @c consider generating the following subsections automatically from m4 files.
 
address@hidden Public macros
address@hidden Public macros
address@hidden Public Macros
address@hidden Public Macros
 
 @table @code
 
@@ -3839,6 +3886,10 @@ variable.  The default @var{compiler-search-list} is 
@samp{upcc upc}.
 This macro will abort @command{configure} if no Unified Parallel C
 compiler is found.
 
address@hidden AM_SILENT_RULES
address@hidden AM_SILENT_RULES
+Enable the machinery for less verbose build output (@pxref{Options}).
+
 @item AM_WITH_DMALLOC
 @acindex AM_WITH_DMALLOC
 @cindex @command{dmalloc}, support for
@@ -3864,8 +3915,8 @@ into @code{LIBOBJS}.
 @end table
 
 
address@hidden Obsolete macros
address@hidden Obsolete macros
address@hidden Obsolete Macros
address@hidden Obsolete Macros
 @cindex obsolete macros
 @cindex autoupdate
 
@@ -3939,8 +3990,8 @@ you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} 
instead.
 @end table
 
 
address@hidden Private macros
address@hidden Private macros
address@hidden Private Macros
address@hidden Private Macros
 
 The following macros are private macros you should not call directly.
 They are called by the other public macros when appropriate.  Do not
@@ -4095,6 +4146,14 @@ Variables, autoconf, The Autoconf Manual}).  Using 
Automake
 conditionals is the preferred solution.  Before we illustrate these
 two possibilities, let's introduce @code{DIST_SUBDIRS}.
 
address@hidden
+* SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
+* Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
+* Subdirectories with AC_SUBST::  Another way for conditional recursion
+* Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
address@hidden menu
+
address@hidden SUBDIRS vs DIST_SUBDIRS
 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
 @cindex @code{DIST_SUBDIRS}, explained
 
@@ -4127,7 +4186,8 @@ If @code{SUBDIRS} contains @code{AC_SUBST} variables,
 does not know the possible values of these variables.  In this case
 @code{DIST_SUBDIRS} needs to be defined manually.
 
address@hidden Conditional subdirectories with @code{AM_CONDITIONAL}
address@hidden Subdirectories with AM_CONDITIONAL
address@hidden Subdirectories with @code{AM_CONDITIONAL}
 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
 
@@ -4168,7 +4228,8 @@ In this case Automake will define @samp{DIST_SUBDIRS = 
src opt}
 automatically because it knows that @code{MAYBE_OPT} can contain
 @samp{opt} in some condition.
 
address@hidden Conditional Subdirectories with @code{AC_SUBST}
address@hidden Subdirectories with AC_SUBST
address@hidden Subdirectories with @code{AC_SUBST}
 @cindex @code{SUBDIRS} and @code{AC_SUBST}
 @cindex @code{AC_SUBST} and @code{SUBDIRS}
 
@@ -4202,7 +4263,8 @@ The drawback is that since Automake cannot guess what the 
possible
 values of @code{MAYBE_OPT} are, it is necessary to define
 @code{DIST_SUBDIRS}.
 
address@hidden Non-configured Subdirectories
address@hidden Unconfigured Subdirectories
address@hidden Unconfigured Subdirectories
 @cindex Subdirectories, configured conditionally
 
 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
@@ -4246,7 +4308,7 @@ lists all the directories that have been configured.
 @end itemize
 @end cartouche
 
-In order to prevent recursion in some non-configured directory you
+In order to prevent recursion in some unconfigured directory you
 must therefore ensure that this directory does not appear in
 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
@@ -4262,7 +4324,7 @@ configuration where all directories are known to appear in
 distribute these directories).
 
 @cindex Subdirectories, not distributed
-In few packages, non-configured directories are not even expected to
+In few packages, unconfigured directories are not even expected to
 be distributed.  Although these packages do not require the
 aforementioned extra arrangements, there is another pitfall.  If the
 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
@@ -4319,7 +4381,8 @@ nobase_include_HEADERS = sys/types.h
 @vindex nodist_
 
 @samp{nobase_} should be specified first when used in conjunction with
-either @samp{dist_} or @samp{nodist_} (@pxref{Dist}).  For instance:
+either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
+Control}).  For instance:
 
 @example
 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
@@ -4462,7 +4525,7 @@ to build programs and libraries.
                                 library builds
 * Default _SOURCES::            Default source files
 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
-* Program variables::           Variables used when building a program
+* Program Variables::           Variables used when building a program
 * Yacc and Lex::                Yacc and Lex support
 * C++ Support::                 Compiling C++ sources
 * Objective C Support::         Compiling Objective C sources
@@ -4471,6 +4534,7 @@ to build programs and libraries.
 * Fortran 77 Support::          Compiling Fortran 77 sources
 * Fortran 9x Support::          Compiling Fortran 9x sources
 * Java Support::                Compiling Java sources
+* Vala Support::                Compiling Vala sources
 * Support for Other Languages::  Compiling other languages
 * ANSI::                        Automatic de-ANSI-fication (obsolete)
 * Dependencies::                Automatic dependency tracking
@@ -4664,7 +4728,7 @@ Fortunately there are two other ways to achieve the same 
result.  One is
 to use configure substitutions in @code{_LDADD} variables, the other is
 to use an Automake conditional.
 
address@hidden Conditional compilation using @code{_LDADD} substitutions
address@hidden Conditional Compilation using @code{_LDADD} Substitutions
 
 @cindex @code{EXTRA_prog_SOURCES}, defined
 
@@ -4702,7 +4766,7 @@ either @file{hello-linux.o} or @file{hello-generic.o}, 
and added to
 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
 built and linked in.
 
address@hidden Conditional compilation using Automake conditionals
address@hidden Conditional Compilation using Automake Conditionals
 
 An often simpler way to compile source files conditionally is to use
 Automake conditionals.  For instance, you could use this
@@ -4748,7 +4812,7 @@ at configure time.  For instance, GNU @code{cpio} only 
builds
 achieve conditional compilation of programs are the same you can use
 to compile source files conditionally: substitutions or conditionals.
 
address@hidden Conditional programs using @command{configure} substitutions
address@hidden Conditional Programs using @command{configure} Substitutions
 
 @vindex EXTRA_PROGRAMS
 @cindex @code{EXTRA_PROGRAMS}, defined
@@ -4773,7 +4837,7 @@ Obviously it cannot rewrite values obtained at run-time 
through
 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
 ['address@hidden@}'])}.
 
address@hidden Conditional programs using Automake conditionals
address@hidden Conditional Programs using Automake Conditionals
 
 You can also use Automake conditionals (@pxref{Conditionals}) to
 select programs to be built.  In this case you don't have to worry
@@ -5261,7 +5325,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
address@hidden can also be influenced with the Automake
address@hidden option (@pxref{Options}).
 
 
 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
@@ -5289,7 +5355,13 @@ performed automatically by Autoconf (@pxref{AC_LIBOBJ vs 
LIBOBJS, ,
 @node Libtool Issues
 @subsection Common Issues Related to Libtool's Use
 
address@hidden @samp{required file `./ltmain.sh' not found}
address@hidden
+* Error required file ltmain.sh not found::      The need to run libtoolize
+* Objects created both with libtool and without:: Avoid a specific build race
address@hidden menu
+
address@hidden Error required file ltmain.sh not found
address@hidden Error: @samp{required file `./ltmain.sh' not found}
 @cindex @file{ltmain.sh} not found
 @cindex @command{libtoolize}, no longer run by @command{automake}
 @cindex @command{libtoolize} and @command{autoreconf}
@@ -5317,6 +5389,7 @@ replacing existing @file{bootstrap.sh} or 
@file{autogen.sh} scripts by
 a call to @command{autoreconf} should also free you from any similar
 incompatible change in the future.
 
address@hidden Objects created both with libtool and without
 @subsubsection Objects @samp{created with both libtool and without}
 
 Sometimes, the same source file is used both to build a libtool
@@ -5351,7 +5424,7 @@ object `foo.$(OBJEXT)' created both with libtool and 
without
 @end example
 
 A workaround for this issue is to ensure that these two objects get
-different basenames.  As explained in @ref{renamed objects}, this
+different basenames.  As explained in @ref{Renamed Objects}, this
 happens automatically when per-targets flags are used.
 
 @example
@@ -5575,7 +5648,7 @@ different name for the intermediate object files.  
Ordinarily a file
 like @file{sample.c} will be compiled to produce @file{sample.o}.
 However, if the program's @code{_CFLAGS} variable is set, then the
 object file will be named, for instance, @file{maude-sample.o}.  (See
-also @ref{renamed objects}.)  The use of per-target compilation flags
+also @ref{Renamed Objects}.)  The use of per-target compilation flags
 with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
 from @file{configure.ac}.
 
@@ -5840,7 +5913,7 @@ be defined by hand (as in the past), however at the time 
of writing
 autoconf, The Autoconf Manual}.
 
 
address@hidden Program variables
address@hidden Program Variables
 @section Variables used when building a program
 
 Occasionally it is useful to know which @file{Makefile} variables
@@ -6128,7 +6201,7 @@ Automake includes some support for Unified Parallel C.
 
 Any package including Unified Parallel C code must define the output
 variable @code{UPC} in @file{configure.ac}; the simplest way to do
-this is to use the @code{AM_PROG_UPC} macro (@pxref{Public macros}).
+this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
 
 A few additional variables are defined when a Unified Parallel C
 source file is seen:
@@ -6523,6 +6596,58 @@ using the @option{--main=} option.  The easiest way to 
do this is to use
 the @code{_LDFLAGS} variable for the program.
 
 
address@hidden Vala Support
address@hidden  node-name,  next,  previous,  up
address@hidden Vala Support
+
address@hidden Vala Support
address@hidden Support for Vala
+
+Automake provides initial support for Vala
+(@uref{http://www.vala-project.org/}).
+This requires valac version 0.7.0 or later.
+
address@hidden
+foo_SOURCES = foo.vala bar.vala zardoc.c
address@hidden example
+
+Any @file{.vala} file listed in a @code{_SOURCES} variable will be
+compiled into C code by the Vala compiler. The generated @file{.c} files are
+distributed. The end user does not need to have a Vala compiler installed.
+
+Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
+that will locate the Vala compiler and optionally check its version
+number.
+
address@hidden AM_PROG_VALAC (@ovar{MINIMUM-VERSION})
+Try to find a Vala compiler in @env{PATH}. If it is found, the variable
address@hidden is set. Optionally a minimum release number of the compiler
+can be requested:
+
address@hidden
+AM_PROG_VALAC([0.7.0])
address@hidden example
address@hidden defmac
+
+There are a few variables that are used when compiling Vala sources:
+
address@hidden @code
address@hidden VALAC
+Path to the the Vala compiler.
+
address@hidden VALAFLAGS
+Additional arguments for the Vala compiler.
+
address@hidden AM_VALAFLAGS
+The maintainer's variant of @code{VALAFLAGS}.
+
address@hidden
+lib_LTLIBRARIES = libfoo.la
+libfoo_la_SOURCES = foo.vala
address@hidden example
address@hidden vtable
+
+
 @node Support for Other Languages
 @comment  node-name,  next,  previous,  up
 @section Support for Other Languages
@@ -6693,7 +6818,7 @@ bin_PROGRAMS = liver$(EXEEXT)
 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
 extension.
 
-The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Tests}) are also
+The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests}) are 
also
 rewritten if they contain filenames that have been declared as programs
 in the same @file{Makefile}.  (This is mostly useful when some programs
 from @code{check_PROGRAMS} are listed in @code{TESTS}.)
@@ -6725,7 +6850,7 @@ an @command{automake}-generated rule for 
@samp{foo$(EXEEXT)}.  Without
 the @option{no-exeext} option, this use will give a diagnostic.
 
 
address@hidden Other objects
address@hidden Other Objects
 @chapter Other Derived Objects
 
 Automake can handle derived objects that are not C programs.  Sometimes
@@ -6804,7 +6929,7 @@ automake: automake.in Makefile
 Such scripts for which a build rule has been supplied need to be
 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
 sources have to be distributed, usually with @code{EXTRA_DIST}
-(@pxref{Dist}).
+(@pxref{Basics of Distribution}).
 
 Another common way to build scripts is to process them from
 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
@@ -6933,7 +7058,7 @@ dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
 
 
 @node Sources
address@hidden Built sources
address@hidden Built Sources
 
 Because Automake's automatic dependency tracking works as a side-effect
 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
@@ -6991,11 +7116,11 @@ The next section illustrates and discusses the handling 
of built sources
 on a toy example.
 
 @menu
-* Built sources example::       Several ways to handle built sources.
+* Built Sources Example::       Several ways to handle built sources.
 @end menu
 
address@hidden Built sources example
address@hidden Built sources example
address@hidden Built Sources Example
address@hidden Built Sources Example
 
 Suppose that @file{foo.c} includes @file{bindir.h}, which is
 installation-dependent and not distributed: it needs to be built.  Here
@@ -7007,7 +7132,7 @@ We suggest several implementations below.  It's not meant 
to be an
 exhaustive listing of all ways to handle built sources, but it will give
 you a few ideas if you encounter this issue.
 
address@hidden First try
address@hidden First Try
 
 This first implementation will illustrate the bootstrap issue mentioned
 in the previous section (@pxref{Sources}).
@@ -7048,7 +7173,7 @@ for instance, it should be inspected while generating tags
 (@pxref{Tags}).  In other words, it does not help our present problem,
 and the build would fail identically without it.
 
address@hidden Using @code{BUILT_SOURCES}
address@hidden Using @code{BUILT_SOURCES}
 
 A solution is to require @file{bindir.h} to be built before anything
 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
@@ -7097,7 +7222,7 @@ foo.c:2: bindir.h: No such file or directory
 make: *** [foo.o] Error 1
 @end example
 
address@hidden Recording dependencies manually
address@hidden Recording Dependencies manually
 
 Usually people are happy enough with @code{BUILT_SOURCES} because they
 never build targets such as @samp{make foo} before @samp{make all}, as
@@ -7133,7 +7258,7 @@ because Automake doesn't have to output any 
@samp{foo.$(OBJEXT):}
 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
 Always check the generated @file{Makefile.in} if you do this.
 
address@hidden Build @file{bindir.h} from @file{configure}
address@hidden Build @file{bindir.h} from @file{configure}
 
 It's possible to define this preprocessor macro from @file{configure},
 either in @file{config.h} (@pxref{Defining Directories, , Defining
@@ -7158,7 +7283,7 @@ However, it's not always possible to build sources from
 @file{configure}, especially when these sources are generated by a tool
 that needs to be built first.
 
address@hidden Build @file{bindir.c}, not @file{bindir.h}.
address@hidden Build @file{bindir.c}, not @file{bindir.h}.
 
 Another attractive idea is to define @code{bindir} as a variable or
 function exported from @file{bindir.o}, and build @file{bindir.c}
@@ -7178,7 +7303,7 @@ need to be built, so it won't cause any trouble.  
@file{bindir.o} is
 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
 first.
 
address@hidden Which is best?
address@hidden Which is best?
 
 There is no panacea, of course.  Each solution has its merits and
 drawbacks.
@@ -7496,7 +7621,7 @@ Currently Automake provides support for Texinfo and man 
pages.
 
 @menu
 * Texinfo::                     Texinfo
-* Man pages::                   Man pages
+* Man Pages::                   Man pages
 @end menu
 
 
@@ -7701,8 +7826,8 @@ TEXINFO_TEX = ../doc/texinfo.tex
 @end vtable
 
 
address@hidden Man pages
address@hidden Man pages
address@hidden Man Pages
address@hidden Man Pages
 
 @cindex @code{_MANS} primary, defined
 @cindex @code{MANS} primary, defined
@@ -7793,7 +7918,8 @@ notrans_man_MANS = foo.3
 @cindex @code{nodist_} and @code{notrans_}
 
 @samp{notrans_} must be specified first when used in conjunction with
-either @samp{dist_} or @samp{nodist_} (@pxref{Dist}).  For instance:
+either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
+Control}).  For instance:
 
 @example
 notrans_dist_man3_MANS = bar.3
@@ -7805,13 +7931,22 @@ notrans_dist_man3_MANS = bar.3
 @cindex Installation support
 @cindex @samp{make install} support
 
address@hidden Basics of installation
-
 Naturally, Automake handles the details of actually installing your
 program once it has been built.  All files named by the various
 primaries are automatically installed in the appropriate places when the
 user runs @samp{make install}.
 
address@hidden
+* Basics of Installation::      What gets installed where
+* The Two Parts of Install::    Installing data and programs separately
+* Extending Installation::      Adding your own rules for installation
+* Staged Installs::             Installation in a temporary location
+* Install Rules for the User::  Useful additional rules
address@hidden menu
+
address@hidden Basics of Installation
address@hidden Basics of Installation
+
 A file named in a primary is installed by copying the built file into
 the appropriate directory.  The base name of the file is used when
 installing.
@@ -7838,7 +7973,7 @@ will install @file{stdio.h} in @samp{$(includedir)} and 
@file{types.h}
 in @samp{$(includedir)/sys}.
 
 For most file types, Automake will install multiple files at once, while
-avoiding command line length issues (@pxref{Length limitations}).  Since
+avoiding command line length issues (@pxref{Length Limitations}).  Since
 some @command{install} programs will not install the same file twice in
 one invocation, you may need to ensure that file lists are unique within
 one variable such as @samp{nobase_include_HEADERS} above.
@@ -7849,7 +7984,8 @@ rely on any particular file installation order even among 
different
 file types (library dependencies are an exception here).
 
 
address@hidden The two parts of install
address@hidden The Two Parts of Install
address@hidden The Two Parts of Install
 
 Automake generates separate @code{install-data} and @code{install-exec}
 rules, in case the installer is installing on multiple machines that
@@ -7882,7 +8018,8 @@ the name (e.g., @code{myexecbin_PROGRAMS}) is installed by
 @code{install-exec}.  All other user-defined prefixes are installed by
 @code{install-data}.
 
address@hidden Extending installation
address@hidden Extending Installation
address@hidden Extending Installation
 
 It is possible to extend this mechanism by defining an
 @code{install-exec-local} or @code{install-data-local} rule.  If these
@@ -7898,7 +8035,8 @@ instance, it is possible to perform post-installation 
modifications
 using an install hook.  @xref{Extending}, for some examples.
 @cindex Install hook
 
address@hidden Staged installs
address@hidden Staged Installs
address@hidden Staged Installs
 
 @vindex DESTDIR
 Automake generates support for the @code{DESTDIR} variable in all
@@ -7931,7 +8069,8 @@ must write that code to respect @code{DESTDIR}.
 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
 for another usage example.
 
address@hidden Rules for the user
address@hidden Install Rules for the User
address@hidden Install Rules for the User
 
 Automake also generates rules for targets @code{uninstall},
 @code{installdirs}, and @code{install-strip}.
@@ -8013,7 +8152,16 @@ We recommend that you follow this same set of heuristics 
in your
 @node Dist
 @chapter What Goes in a Distribution
 
address@hidden Basics of distribution
address@hidden
+* Basics of Distribution::      Files distributed by default
+* Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
+* The dist Hook::               A target for last-minute distribution changes
+* Checking the Distribution::   @samp{make distcheck} explained
+* The Types of Distributions::  A variety of formats and compression methods
address@hidden menu
+
address@hidden Basics of Distribution
address@hidden Basics of Distribution
 
 @cindex @samp{make dist}
 
@@ -8072,7 +8220,8 @@ exact list of subdirectories to include in the 
distribution
 (@pxref{Conditional Subdirectories}).
 
 
address@hidden Fine-grained distribution control
address@hidden Fine-grained Distribution Control
address@hidden Fine-grained Distribution Control
 
 @vindex dist_
 @vindex nodist_
@@ -8094,7 +8243,8 @@ bin_PROGRAMS = foo
 nodist_foo_SOURCES = do-not-distribute.c
 @end example
 
address@hidden The dist hook
address@hidden The dist Hook
address@hidden The dist Hook
 
 @trindex dist-hook
 
@@ -8144,7 +8294,8 @@ Note that when packages are nested using 
@code{AC_CONFIG_SUBDIRS}
 @samp{$(top_distdir)} are relative to the package where @samp{make
 dist} was run, not to any sub-packages involved.
 
address@hidden Checking the distribution
address@hidden Checking the Distribution
address@hidden Checking the Distribution
 
 @cindex @samp{make distcheck}
 @cindex @samp{make distcleancheck}
@@ -8239,7 +8390,8 @@ distuninstallcheck:
         @@:
 @end example
 
address@hidden The types of distributions
address@hidden The Types of Distributions
address@hidden The Types of Distributions
 
 Automake generates rules to provide archives of the project for
 distributions in various formats.  Their targets are:
@@ -8291,8 +8443,17 @@ default, only the @code{dist-gzip} target is hooked to 
@code{dist}.
 @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.
 
address@hidden
+* Simple Tests::                Listing programs and scripts in @code{TESTS}
+* Simple Tests using parallel-tests::  More powerful test driver
+* DejaGnu Tests::               Interfacing with the external testing framework
+* Install Tests::               Running tests on installed packages
address@hidden menu
+
address@hidden Simple Tests
 @section Simple Tests
 
 If the variable @code{TESTS} is defined, its value is taken to be a
@@ -8301,7 +8462,8 @@ Programs needing data files should look for them in 
@code{srcdir}
 (which is both an environment variable and a make variable) so they
 work when building in a separate directory (@pxref{Build Directories,
 , Build Directories , autoconf, The Autoconf Manual}), and in
-particular for the @code{distcheck} rule (@pxref{Dist}).
+particular for the @code{distcheck} rule (@pxref{Checking the
+Distribution}).
 
 For each of the @code{TESTS}, the result of execution is printed along
 with the test name, where @code{PASS} denotes a successful test,
@@ -8327,7 +8489,7 @@ terminal with @samp{AM_COLOR_TESTS=always}.
 @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
@@ -8364,6 +8526,220 @@ that @code{check_PROGRAMS} are @emph{not} automatically 
added to
 by the tests, not the tests themselves.  Of course you can set
 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
 
+
address@hidden Simple Tests using parallel-tests
address@hidden Simple Tests using @samp{parallel-tests}
address@hidden @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
+in the previous section, 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
address@hidden (reStructuredText) and @samp{HTML} format, and hard errors
+for exceptional failures.  Similar to the simple test driver,
address@hidden, @code{AM_COLOR_TESTS}, @code{XFAIL_TESTS}, and
+the @code{check_*} variables are honored, and the environment variable
address@hidden is set during test execution.
+
+This test driver is still experimental and may undergo changes in order
+to satisfy additional portability requirements.
+
address@hidden TEST_SUITE_LOG
address@hidden TESTS
+The driver operates by defining a set of @command{make} rules to create
+a summary log file, @code{TEST_SUITE_LOG}, which defaults to
address@hidden and requires a @file{.log} suffix.  This file
+depends upon log files created for each single test program listed in
address@hidden, which in turn contain all output produced by the
+corresponding tests.
+
address@hidden TEST_EXTENSIONS
address@hidden TEST_LOGS
+Each log file is created when the corresponding test has completed.
+The set of log files is listed in the read-only variable
address@hidden, and defaults to @code{TESTS}, with the executable
+extension if any (@pxref{EXEEXT}), as well as any suffix listed in
address@hidden removed, and @file{.log} appended.
address@hidden defaults to @file{.test}.  Results are undefined
+if a test file name ends in several concatenated suffixes.
+
address@hidden _LOG_COMPILE
address@hidden _LOG_COMPILER
address@hidden _LOG_FLAGS
address@hidden LOG_COMPILE
address@hidden LOG_COMPILER
address@hidden LOG_FLAGS
address@hidden @var{EXT}_LOG_COMPILE
address@hidden @var{EXT}_LOG_COMPILER
address@hidden @var{EXT}_LOG_FLAGS
address@hidden address@hidden
address@hidden AM_LOG_FLAGS
+For tests that match an extension @address@hidden listed in
address@hidden, you can provide a test driver using the variable
address@hidden@var{ext}_LOG_COMPILER} (note the upper-case extension) and pass
+options in @address@hidden and allow the user to pass
+options in @address@hidden  It will cause all tests with
+this extension to be called with this driver.  For all tests without a
+registered extension, the variables @code{LOG_COMPILER},
address@hidden, and @code{LOG_FLAGS} may be used.  For example,
+
address@hidden
+TESTS = foo.pl bar.py baz
+TEST_EXTENSIONS = .pl .py
+PL_LOG_COMPILER = $(PERL)
+AM_PL_LOG_FLAGS = -w
+PY_LOG_COMPILER = $(PYTHON)
+AM_PY_LOG_FLAGS = -v
+LOG_COMPILER = ./wrapper-script
+AM_LOG_FLAGS = -d
address@hidden example
+
address@hidden
+will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
+and @samp{./wrapper-script -d baz} to produce @file{foo.log},
address@hidden, and @file{baz.log}, respectively.  The
address@hidden variable is still expanded before the driver,
+but should be reserved for the user.
+
address@hidden 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
address@hidden 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.
+
address@hidden mostlyclean
address@hidden check-html
address@hidden RST2HTML
address@hidden 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
address@hidden  The variable @samp{TEST_SUITE_HTML} contains the
+set of converted log files.  The log and HTML files are removed upon
address@hidden mostlyclean}.
+
address@hidden DISABLE_HARD_ERRORS
address@hidden Exit status 99, special interpretation
address@hidden 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.
+
+By default, the test suite driver will run all tests, but there are
+several ways to limit the set of tests that are run:
+
address@hidden @bullet
address@hidden
+You can set the @code{TESTS} variable, similarly to how you can with
+the simple test driver from the previous section.  For example, you can
+use a command like this to run only a subset of the tests:
+
address@hidden
+env TESTS="foo.test bar.test" make -e check
address@hidden example
+
address@hidden
+You can set the @code{TEST_LOGS} variable.  By default, this variable is
+computed at @command{make} run time from the value of @code{TESTS} as
+described above.  For example, you can use the following:
+
address@hidden
+set x subset*.log; shift
+env TEST_LOGS="foo.log $*" make -e check
address@hidden example
+
address@hidden
address@hidden RECHECK_LOGS
address@hidden lazy test execution
+By default, the test driver removes all old per-test log files before it
+starts running tests to regenerate them.  The variable
address@hidden contains the set of log files which are removed.
address@hidden defaults to @code{TEST_LOGS}, which means all tests
+need to be rechecked.  By overriding this variable, you can choose which
+tests need to be reconsidered.  For example, you can lazily rerun only
+those tests which are outdated, i.e., older than their prerequisite test
+files, by setting this variable to the empty value:
+
address@hidden
+env RECHECK_LOGS= make -e check
address@hidden example
+
address@hidden
address@hidden recheck
address@hidden recheck-html
+You can ensure that all tests are rerun which have failed or passed
+unexpectedly, by running @code{make recheck} in the test directory.
+This convenience target will set @code{RECHECK_LOGS} appropriately
+before invoking the main test driver.  The @code{recheck-html} target
+does the same as @code{recheck} but again converts the resulting log
+file in HTML format, like the @code{check-html} target.
address@hidden itemize
+
+In order to guarantee an ordering between tests even with @code{make
address@hidden, 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}:
+
address@hidden
+TESTS = foo-compile.test foo-execute.test
+foo-execute.log: foo-compile.log
address@hidden example
+
address@hidden
+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
address@hidden failed or was skipped beforehand.  Further,
+please note that specifying such dependencies currently works only for
+tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
+
+Tests without such specified dependencies may be run concurrently with
+parallel @command{make address@hidden, so be sure they are prepared for
+concurrent execution.
+
address@hidden 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.
+
+Please note that it is currently not possible to use @code{$(srcdir)/}
+or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
+limitation is necessary to avoid generating test logs in the source tree
+and has the unfortunate consequence that it is not possible to specify
+distributed tests that are themselves generated by means of explicit
+rules, in a way that is portable to all @command{make} implementations
+(@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
+semantics of FreeBSD and OpenBSD @command{make} conflict with this).
+In case of doubt you may want to require to use GNU @command{make},
+or work around the issue with inference rules to generate the tests.
+
+
address@hidden DejaGnu Tests
 @section DejaGnu Tests
 
 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
@@ -8408,6 +8784,7 @@ dejagnu, The DejaGnu Manual}.
 
 In either case, the testing is done via @samp{make check}.
 
address@hidden Install Tests
 @section Install Tests
 
 The @code{installcheck} target is available to the user as a way to
@@ -8558,13 +8935,13 @@ in the first few lines of the @file{NEWS} file.
 @item @option{color-tests}
 @cindex Option, @option{color-tests}
 @opindex color-tests
-Cause output of the simple test suite (@pxref{Tests}) to be
+Cause output of the simple test suite (@pxref{Simple Tests}) to be
 colorized on capable terminals.
 
 @item @option{dejagnu}
 @cindex Option, @option{dejagnu}
 @opindex dejagnu
-Cause @command{dejagnu}-specific rules to be generated.  @xref{Tests}.
+Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
 
 @item @option{dist-bzip2}
 @cindex Option, @option{dist-bzip2}
@@ -8678,6 +9055,12 @@ are ordinarily automatically provided by Automake.
 Don't require @file{texinfo.tex}, even if there are texinfo files in
 this directory.
 
address@hidden @option{parallel-tests}
address@hidden Option, @option{parallel-tests}
address@hidden parallel-tests
+Enable test suite driver for @code{TESTS} that can run tests in parallel
+(@pxref{Simple Tests using parallel-tests}, for more information).
+
 @item @option{readme-alpha}
 @cindex Option, @option{readme-alpha}
 @opindex readme-alpha
@@ -8690,6 +9073,92 @@ non-alpha releases.  The second form is
 @address@hidden@address@hidden, where @var{ALPHA} is a
 letter; it should be omitted for non-alpha releases.
 
address@hidden @option{silent-rules}
address@hidden Option, @option{silent-rules}
address@hidden silent-rules
+Enable less verbose build rules.  This can be used to let build rules
+output a status line of the form
+
address@hidden
+  GEN @var{output-file}
address@hidden example
+
address@hidden
+instead of printing the command that will be executed to update
address@hidden  It can also silence @command{libtool} output.
+
+To enable less verbose build rules, both the developer and the user
+of the package have to take a number of steps.  The developer needs
+to do either of the following:
+
address@hidden @bullet
address@hidden
+Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
address@hidden
+Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
+file.
address@hidden itemize
+
address@hidden default verbosity for silent-rules
+If the developer has done either of the above, then the user of the
+package may influence the verbosity at @command{configure} run time as
+well as at @command{make} run time:
+
address@hidden @bullet
address@hidden
address@hidden --enable-silent-rules
address@hidden --disable-silent-rules
+Passing @option{--enable-silent-rules} to @command{configure} will cause
+build rules to be less verbose; the option @option{--disable-silent-rules}
+is the default and will cause normal verbose output.
address@hidden
address@hidden @code{V}
+At @command{make} run time, the default chosen at @command{configure}
+time may be overridden: @code{make V=1} will produce verbose output,
address@hidden V=0} less verbose output.
address@hidden itemize
+
+For portability to different @command{make} implementations, package authors
+are advised to not set the variable @code{V} inside the @file{Makefile.am}
+file, to allow the user to override the value for subdirectories as well.
+
+The current implementation of this feature relies on a non-POSIX, but in
+practice rather widely supported @file{Makefile} construct of nested
+variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
address@hidden option if your package needs to build with
address@hidden implementations that do not support it.  The
address@hidden option turns off warnings about recursive variable
+expansion, which are in turn enabled by @option{-Wportability}
+(@pxref{Invoking Automake}).
+
address@hidden @code{AM_V_GEN}
address@hidden @code{AM_V_at}
address@hidden @code{AM_DEFAULT_VERBOSITY}
+To extend the silent mode to your own rules, you have two choices:
+
address@hidden @bullet
address@hidden
+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
address@hidden as a prefix to commands that should not output anything
+in silent mode.  When output is to be verbose, both of these variables
+will expand to the empty string.
address@hidden
+You can add your own variables, so strings of your own choice are shown.
+The following snippet shows how you would define your own equivalent of
address@hidden:
+
address@hidden
+pkg_verbose = $(pkg_verbose_$(V))
+pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY))
+pkg_verbose_0 = @@echo GEN $@@;
+
+foo: foo.in
+        $(pkg_verbose)cp $(srcdir)/foo.in $@@
address@hidden example
address@hidden itemize
+
+
 @item @option{std-options}
 @cindex Options, @option{std-options}
 @cindex @samp{make installcheck}, testing @option{--help} and 
@option{--version}
@@ -8993,7 +9462,24 @@ they are needed to rebuild @file{Makefile.in}.
 
 Automake supports a simple type of conditionals.
 
address@hidden Usage
+These conditionals are not the same as conditionals in
+GNU Make.  Automake conditionals are checked at configure time by the
address@hidden script, and affect the translation from
address@hidden to @file{Makefile}.  They are based on options passed
+to @file{configure} and on results that @file{configure} has discovered
+about the host system.  GNU Make conditionals are checked at @command{make}
+time, and are based on variables passed to the make program or defined
+in the @file{Makefile}.
+
+Automake conditionals will work with any make program.
+
address@hidden
+* Usage of Conditionals::       Declaring conditional content
+* Limits of Conditionals::      Enclosing complete statements
address@hidden menu
+
address@hidden Usage of Conditionals
address@hidden Usage of Conditionals
 
 @acindex AM_CONDITIONAL
 Before using a conditional, you must define it by using
@@ -9099,20 +9585,8 @@ AM_COND_IF([SHELL_WRAPPER],
            [AC_CONFIG_FILES([wrapper:wrapper.in])])
 @end example
 
address@hidden Portability
-
-Note that conditionals in Automake are not the same as conditionals in
-GNU Make.  Automake conditionals are checked at configure time by the
address@hidden script, and affect the translation from
address@hidden to @file{Makefile}.  They are based on options passed
-to @file{configure} and on results that @file{configure} has discovered
-about the host system.  GNU Make conditionals are checked at @command{make}
-time, and are based on variables passed to the make program or defined
-in the @file{Makefile}.
-
-Automake conditionals will work with any make program.
-
address@hidden Limits
address@hidden Limits of Conditionals
address@hidden Limits of Conditionals
 
 Conditionals should enclose complete statements like variables or
 rules definitions.  Automake cannot deal with conditionals used inside
@@ -9139,7 +9613,8 @@ endif
 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
 @end example
 
address@hidden or
address@hidden
+or
 
 @example
 AM_CPPFLAGS = -DFEATURE_A
@@ -9149,6 +9624,12 @@ endif
 AM_CPPFLAGS += -DFEATURE_B
 @end example
 
+More details and examples of conditionals are described alongside
+various Automake features in this manual (@pxref{Conditional
+Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
+Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
+Libtool Sources}).
+
 @node Gnits
 @chapter The effect of @option{--gnu} and @option{--gnits}
 
@@ -9471,10 +9952,10 @@ destination directory in order to create relative links.
 
 When writing @code{install-exec-hook} or @code{install-data-hook},
 please bear in mind that the exec/data distinction is based on the
-installation directory, not on the primary used (@pxref{Install}).  So
-a @code{foo_SCRIPTS} will be installed by @code{install-data}, and a
address@hidden will be installed by @code{install-exec}.  You
-should define your hooks consequently.
+installation directory, not on the primary used (@pxref{The Two Parts of
+Install}).  So a @code{foo_SCRIPTS} will be installed by
address@hidden, and a @code{barexec_SCRIPTS} will be installed by
address@hidden  You should define your hooks consequently.
 
 @c FIXME should include discussion of variables you can use in these
 @c rules
@@ -9514,7 +9995,7 @@ constructed.  Of course this target is not required if the
 @option{no-dist} option (@pxref{Options}) is used.
 
 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
-(@pxref{Dist}) will be passed from the outer package to the subpackage
+(@pxref{The dist Hook}) will be passed from the outer package to the subpackage
 when the @code{distdir} target is invoked.  These two variables have
 been adjusted for the directory that is being recursed into, so they
 are ready to use.
@@ -9677,8 +10158,8 @@ have a special exception allowing you to distribute them 
with your
 package, regardless of the licensing you choose.
 
 
address@hidden API versioning
address@hidden Automake API versioning
address@hidden API Versioning
address@hidden Automake API Versioning
 
 New Automake releases usually include bug fixes and new features.
 Unfortunately they may also introduce new bugs and incompatibilities.
@@ -9807,11 +10288,11 @@ lists.
 @menu
 * CVS::                         CVS and generated files
 * maintainer-mode::             missing and AM_MAINTAINER_MODE
-* wildcards::                   Why doesn't Automake support wildcards?
-* limitations on file names::   Limitations on source and installed file names
+* Wildcards::                   Why doesn't Automake support wildcards?
+* Limitations on File Names::   Limitations on source and installed file names
 * distcleancheck::              Files left in build directory after distclean
 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
-* renamed objects::             Why are object files sometimes renamed?
+* Renamed Objects::             Why are object files sometimes renamed?
 * Per-Object Flags::            How to simulate per-object flags?
 * Multiple Outputs::            Writing rules for tools with many output files
 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
@@ -9820,7 +10301,7 @@ lists.
 @node CVS
 @section CVS and generated files
 
address@hidden Background: distributed generated files
address@hidden Background: distributed generated Files
 @cindex generated files, distributed
 @cindex rebuild rules
 
@@ -9841,7 +10322,7 @@ As generated files shipped in packages are up-to-date, 
and because
 @command{tar} preserves times-tamps, these rebuild rules are not
 triggered when a user unpacks and builds a package.
 
address@hidden Background: CVS and timestamps
address@hidden Background: CVS and Timestamps
 @cindex timestamps and CVS
 @cindex CVS and timestamps
 
@@ -9864,7 +10345,7 @@ after a @command{cvs update} that updates both files, 
even if
 checked in.  Calling @command{make} will then trigger a spurious rebuild
 of @file{configure}.
 
address@hidden Living with CVS in Autoconfiscated projects
address@hidden Living with CVS in Autoconfiscated Projects
 @cindex CVS and generated files
 @cindex generated files and CVS
 
@@ -9872,7 +10353,7 @@ There are basically two clans amongst maintainers: those 
who keep all
 distributed files under CVS, including generated files, and those who
 keep generated files @emph{out} of CVS.
 
address@hidden All files in CVS
address@hidden All Files in CVS
 
 @itemize @bullet
 @item
@@ -9938,7 +10419,7 @@ tree, @file{Makefile.in} will happen to be newer than
 
 @end itemize
 
address@hidden Generated files out of CVS
address@hidden Generated Files out of CVS
 
 One way to get CVS and @command{make} working peacefully is to never
 store generated files in CVS, i.e., do not CVS-control files that
@@ -9964,7 +10445,7 @@ produces bogus output (for instance a non-portable C 
file), something
 other developers could have noticed if they weren't using their own
 versions of this tool.
 
address@hidden Third-party files
address@hidden Third-party Files
 @cindex CVS and third-party files
 @cindex third-party files and CVS
 
@@ -9982,7 +10463,7 @@ Issues, Integrating with CVS, gettext, GNU gettext 
tools}.
 @node maintainer-mode
 @section @command{missing} and @code{AM_MAINTAINER_MODE}
 
address@hidden @command{missing}
address@hidden @command{missing}
 @cindex @command{missing}, purpose
 
 The @command{missing} script is a wrapper around several maintainer
@@ -10011,7 +10492,7 @@ rule is spuriously triggered, halting the build.  This 
failure to let
 the build continue is one of the arguments of the
 @code{AM_MAINTAINER_MODE} advocates.
 
address@hidden @code{AM_MAINTAINER_MODE}
address@hidden @code{AM_MAINTAINER_MODE}
 @cindex @code{AM_MAINTAINER_MODE}, purpose
 @acindex AM_MAINTAINER_MODE
 
@@ -10061,7 +10542,7 @@ and because @command{missing} isn't enough if you have 
the wrong
 version of the tools.
 
 
address@hidden wildcards
address@hidden Wildcards
 @section Why doesn't Automake support wildcards?
 @cindex wildcards
 
@@ -10133,8 +10614,8 @@ variables as far Automake is concerned.
 You can get warnings about @samp{$(wildcard ...}) constructs using the
 @option{-Wportability} flag.
 
address@hidden limitations on file names
address@hidden Limitations on file names
address@hidden Limitations on File Names
address@hidden Limitations on File Names
 @cindex file names, limitations on
 
 Automake attempts to support all kinds of file names, even those that
@@ -10207,8 +10688,8 @@ Nowadays it is no longer worth worrying about the 8.3 
limits of
 This is a diagnostic you might encounter while running @samp{make
 distcheck}.
 
-As explained in @ref{Dist}, @samp{make distcheck} attempts to build
-and check your package for errors like this one.
+As explained in @ref{Checking the Distribution}, @samp{make distcheck}
+attempts to build and check your package for errors like this one.
 
 @samp{make distcheck} will perform a @code{VPATH} build of your
 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
@@ -10340,7 +10821,8 @@ in distributing it.
 
 @vrindex distcleancheck_listfiles
 For desperate cases, it's always possible to disable this check by
-setting @code{distcleancheck_listfiles} as documented in @ref{Dist}.
+setting @code{distcleancheck_listfiles} as documented in @ref{Checking
+the Distribution}.
 Make sure you do understand the reason why @samp{make distcheck}
 complains before you do this.  @code{distcleancheck_listfiles} is a
 way to @emph{hide} errors, not to fix them.  You can always do better.
@@ -10367,7 +10849,7 @@ put the flag into @code{AM_CXXFLAGS} it is prepended to 
the other
 flags, not appended.
 @end display
 
address@hidden Compile Flag Variables
address@hidden Compile Flag Variables
 @cindex Flag Variables, Ordering
 @cindex Compile Flag Variables
 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
@@ -10545,12 +11027,12 @@ Finally, we have avoided naming the variable of the 
example
 Automake to think that this is actually a per-target variable (like
 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
 
address@hidden Other Variables
address@hidden Other Variables
 
 There are other variables in Automake that follow similar principles
 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
-DejaGnu tests (@pxref{Tests}) use @code{RUNTESTDEFAULTFLAGS} and
+DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
@@ -10564,7 +11046,7 @@ obeys this naming scheme.  The slight difference is that
 
 However you should not think that all variables ending with
 @code{FLAGS} follow this convention.  For instance,
address@hidden (@pxref{Dist}) and
address@hidden (@pxref{Checking the Distribution}) and
 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
 are two variables that are only useful to the maintainer and have no
 user counterpart.
@@ -10580,7 +11062,7 @@ variable), and @code{mumble_LIBADD} exists only as a 
per-target
 variable.  @xref{Program and Library Variables}.
 
 
address@hidden renamed objects
address@hidden Renamed Objects
 @section Why are object files sometimes renamed?
 
 This happens when per-target compilation flags are used.  Object
@@ -10646,7 +11128,7 @@ foo_CFLAGS = -some -flags
 @noindent
 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
 compiled with @samp{-some -flags}.  (If you wonder about the names of
-these object files, see @ref{renamed objects}.)  Note that
+these object files, see @ref{Renamed Objects}.)  Note that
 @code{foo_CFLAGS} gives the flags to use when compiling all the C
 sources of the @emph{program} @code{foo}, it has nothing to do with
 @file{foo.c} or @file{foo-foo.o} specifically.
@@ -10685,8 +11167,8 @@ could think about defining the @samp{foo-foo.o: foo.c} 
rule yourself.
 We recommend against this, because this is error prone.  For instance,
 if you add such a rule to the first example, it will break the day you
 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
-compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{renamed
-objects}).  Also in order to support dependency tracking, the two
+compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
+Objects}).  Also in order to support dependency tracking, the two
 @file{.o}/@file{.obj} extensions, and all the other flags variables
 involved in a compilation, you will end up modifying a copy of the
 rule previously output by @command{automake} for this file.  If a new
@@ -11720,7 +12202,7 @@ facing similar troubles, for similar reasons.
 @item 2002-03-05 Automake 1.6
 
 This release introduced versioned installation (@pxref{API
-versioning}).  This was mainly pushed by Havoc Pennington, taking the
+Versioning}).  This was mainly pushed by Havoc Pennington, taking the
 GNOME source tree as motive: due to incompatibilities between the
 autotools it's impossible for the GNOME packages to switch to Autoconf
 2.53 and Automake 1.5 all at once, so they are currently stuck with
@@ -11869,7 +12351,17 @@ tracking methods, their flaws, and their fixes.  We 
conclude with
 recommendations for tool writers, and by indicating future directions
 for dependency tracking work in Automake.
 
address@hidden First Take
address@hidden
+* First Take on Dependencies::  Precomputed dependency tracking
+* Dependencies As Side Effects::  Update at developer compile time
+* Dependencies for the User::   Update at user compile time
+* Techniques for Dependencies:: Alternative approaches
+* Recommendations for Tool Writers::  What tool writers can do to help
+* Future Directions for Dependencies::  Languages Automake does not know
address@hidden menu
+
address@hidden First Take on Dependencies
address@hidden First Take on Dependency Tracking
 @unnumberedsubsubsec Description
 
 Our first attempt at automatic dependency tracking was based on the
@@ -11928,6 +12420,7 @@ implementation of dependency tracking, I believe the 
impetus and
 inspiration was Jim Meyering.  (I could be mistaken.  If you know
 otherwise feel free to correct me.)
 
address@hidden Dependencies As Side Effects
 @subsection Dependencies As Side Effects
 @unnumberedsubsubsec Description
 
@@ -11977,6 +12470,7 @@ output of @command{gcc} to include a dummy dependency 
for each header
 file.
 @end itemize
 
address@hidden Dependencies for the User
 @subsection Dependencies for the User
 @unnumberedsubsubsec Description
 
@@ -12077,6 +12571,7 @@ because we have to encode two compilation rules in 
@file{Makefile}
 (with or without @command{depcomp}), the produced @file{Makefile}s are
 larger.
 
address@hidden Techniques for Dependencies
 @subsection Techniques for Computing Dependencies
 
 There are actually several ways for a build tool like Automake to
@@ -12109,6 +12604,7 @@ powerful, but unfortunately it is not portable enough 
for use in
 @command{automake}.
 @end table
 
address@hidden Recommendations for Tool Writers
 @subsection Recommendations for Tool Writers
 
 We think that every compilation tool ought to be able to generate
@@ -12120,7 +12616,8 @@ bug.  Finally, the tool should generate a dependency 
for each probe,
 instead of each successful file open, in order to avoid the duplicated
 new header bug.
 
address@hidden Future Directions for Automake's Dependency Tracking
address@hidden Future Directions for Dependencies
address@hidden Future Directions for Dependencies
 
 Currently, only languages and compilers understood by Automake can
 have dependency tracking enabled.  We would like to see if it is
@@ -12212,6 +12709,7 @@ parentheses is the number of generated test cases.
 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 
1453 (32) @tab 144 @tab 570
 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 
1496 (34) @tab 172 @tab 604
 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 
1499 (34) @tab 173 @tab 617
address@hidden 2009-03-29 @tab 1.10b  @tab 8556 @tab 1092 @tab 8281 @tab 4106 
(41) @tab 1608 (35) @tab 178 @tab 720 (20)
 @end multitable
 
 
@@ -12299,7 +12797,7 @@ parentheses is the number of generated test cases.
 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
address@hidden  LocalWords:  unnumberedsubsec depfile tmpdepfile depmode const 
interoperate
address@hidden  LocalWords:  depfile tmpdepfile depmode const interoperate
 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
diff --git a/lib/Automake/ChannelDefs.pm b/lib/Automake/ChannelDefs.pm
index 53988ca..c05c414 100644
--- a/lib/Automake/ChannelDefs.pm
+++ b/lib/Automake/ChannelDefs.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2006, 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
@@ -154,6 +154,7 @@ register_channel 'gnu', type => 'warning';
 register_channel 'obsolete', type => 'warning', silent => 1;
 register_channel 'override', type => 'warning', silent => 1;
 register_channel 'portability', type => 'warning', silent => 1;
+register_channel 'portability-recursive', type => 'warning', silent => 1;
 register_channel 'syntax', type => 'warning';
 register_channel 'unsupported', type => 'warning';
 
@@ -280,6 +281,8 @@ sub switch_warning ($)
   elsif (channel_type ($cat) eq 'warning')
     {
       setup_channel $cat, silent => $has_no;
+      setup_channel 'portability-recursive', silent => $has_no
+        if $cat eq 'portability';
     }
   else
     {
diff --git a/lib/Automake/Makefile.in b/lib/Automake/Makefile.in
index 1ca863e..f649390 100644
--- a/lib/Automake/Makefile.in
+++ b/lib/Automake/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -254,9 +254,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
index 5750cd1..ea4e6bb 100644
--- a/lib/Automake/Options.pm
+++ b/lib/Automake/Options.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 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
@@ -266,7 +266,7 @@ sub _process_option_list (\%$@)
             || $_ eq 'subdir-objects' || $_ eq 'nostdinc'
             || $_ eq 'no-exeext' || $_ eq 'no-define'
             || $_ eq 'std-options'
-            || $_ eq 'color-tests'
+            || $_ eq 'color-tests' || $_ eq 'parallel-tests'
             || $_ eq 'cygnus' || $_ eq 'no-dependencies')
        {
          # Explicitly recognize these.
@@ -276,6 +276,12 @@ sub _process_option_list (\%$@)
          delete $options->{$_};
          $options->{'filename-length-max'} = [$_, $1];
        }
+      elsif ($_ eq  'silent-rules')
+        {
+         error ($where,
+                "option `$_' must be an argument of AM_INIT_AUTOMAKE")
+           if $where->get !~ /^configure\./;
+       }
       elsif ($_ eq 'tar-v7' || $_ eq 'tar-ustar' || $_ eq 'tar-pax')
        {
          error ($where,
diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm
index 79bb42c..f826586 100644
--- a/lib/Automake/Variable.pm
+++ b/lib/Automake/Variable.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2005, 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 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
@@ -128,7 +128,10 @@ non-object).
 
 =cut
 
-my $_VARIABLE_PATTERN = 'address@hidden' . "\$";
+my $_VARIABLE_CHARACTERS = 'address@hidden';
+my $_VARIABLE_PATTERN = '^' . $_VARIABLE_CHARACTERS . "\$";
+my $_VARIABLE_RECURSIVE_PATTERN =
+    '^(address@hidden|\$[({]' . $_VARIABLE_CHARACTERS . '[})]?)+' . "\$";
 
 # The order in which variables should be output.  (May contain
 # duplicates -- only the first occurrence matters.)
@@ -771,8 +774,17 @@ sub check_variable_expansions ($$)
          # Mention this in the diagnostic.
          my $gnuext = "";
          $gnuext = "\n(probably a GNU make extension)" if $var =~ / /;
-         msg ('portability', $where,
-              "$var: non-POSIX variable name$gnuext");
+         # Accept recursive variable expansions if so desired
+         # (we hope they are rather portable in practice).
+         if ($var =~ /$_VARIABLE_RECURSIVE_PATTERN/o)
+           {
+             msg ('portability-recursive', $where,
+                  "$var: non-POSIX recursive variable expansion$gnuext");
+           }
+         else
+           {
+             msg ('portability', $where, "$var: non-POSIX variable 
name$gnuext");
+           }
        }
     }
 }
diff --git a/lib/Automake/tests/.gitignore b/lib/Automake/tests/.gitignore
new file mode 100644
index 0000000..ffbdfaf
--- /dev/null
+++ b/lib/Automake/tests/.gitignore
@@ -0,0 +1,2 @@
+*.log
+*.log-t
diff --git a/lib/Automake/tests/Makefile.am b/lib/Automake/tests/Makefile.am
index acd769f..b56f3dc 100644
--- a/lib/Automake/tests/Makefile.am
+++ b/lib/Automake/tests/Makefile.am
@@ -1,6 +1,6 @@
 ## Process this file with automake to create Makefile.in
 
-## Copyright (C) 2002, 2003, 2008  Free Software Foundation, Inc.
+## Copyright (C) 2002, 2003, 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
@@ -15,7 +15,10 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-TESTS_ENVIRONMENT = $(PERL) -Mstrict -I ../.. -I $(top_srcdir)/lib -w
+PL_LOG_COMPILER = $(PERL)
+AM_PL_LOG_FLAGS = -Mstrict -I ../.. -I $(top_srcdir)/lib -w
+TEST_EXTENSIONS = .pl
+
 TESTS = \
 Condition.pl \
 Condition-t.pl \
diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in
index 85c4971..8233295 100644
--- a/lib/Automake/tests/Makefile.in
+++ b/lib/Automake/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -65,6 +65,72 @@ test "X$(AM_COLOR_TESTS)" != Xno \
   blu=''; \
   std=''; \
 }
+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 = $(AWK) '{                               \
+  n = split($$0, lines, "\\.  "); max = 0;             \
+  for (i = 1; i <= n; ++i)                             \
+    if (max < length(lines[i]))                                \
+      max = length(lines[i]);                          \
+  for (i = 0; i < max; ++i) line = line "=";           \
+  print line;                                          \
+  for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+  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 address@hidden;                                          \
+trap 'st=$$?; rm -f '\''$(abs_builddir)/address@hidden'\''; (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)
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
+TEST_SUITE_LOG = test-suite.log
+TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
+am__test_logs1 = $(TESTS:=.log)
+TEST_LOGS = $(am__test_logs1:.pl.log=.log)
+PL_LOG_COMPILE = $(PL_LOG_COMPILER) $(AM_PL_LOG_FLAGS) $(PL_LOG_FLAGS)
+TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -154,7 +220,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-TESTS_ENVIRONMENT = $(PERL) -Mstrict -I ../.. -I $(top_srcdir)/lib -w
+PL_LOG_COMPILER = $(PERL)
+AM_PL_LOG_FLAGS = -Mstrict -I ../.. -I $(top_srcdir)/lib -w
+TEST_EXTENSIONS = .pl
 TESTS = \
 Condition.pl \
 Condition-t.pl \
@@ -167,6 +235,7 @@ EXTRA_DIST = $(TESTS)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .html .log .pl
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -176,9 +245,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
@@ -204,97 +273,159 @@ ctags: CTAGS
 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 =                                       \
+>address@hidden 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 address@hidden >>$@;                                               \
+rm -f address@hidden
+
+$(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                                              \
+             PASS:*|XFAIL:*);;                                         \
+             *) echo; cat $$f;;                                        \
+           esac;                                                       \
+         done;                                                         \
+       } >$(TEST_SUITE_LOG).tmp;                                       \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       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;                                                             \
+       test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
+       $(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)";                                \
+       $$exit
+
+# Run all the tests.
+check-TESTS:
+       @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+       @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 $< >address@hidden
+       @mv address@hidden $@
+
+# Be sure to run check first, and then to convert the result.
+# Beware of concurrent executions.  Run "check" not "check-TESTS", as
+# check-SCRIPTS and other dependencies are rebuilt by the former only.
+# And expect check to fail.
+check-html:
+       @if $(MAKE) $(AM_MAKEFLAGS) check; then                 \
+         rv=0; else rv=$$?;                                    \
+       fi;                                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;   \
+       exit $$rv
+recheck recheck-html:
+       @target=`echo $@ | sed 's,^re,,'`;                              \
+       list='$(TEST_LOGS)';                                            \
+       list=`for f in $$list; do                                       \
+               test -f $$f || continue;                                \
+               if read line < $$f; then                                \
+                 case $$line in FAIL*|XPASS*) echo $$f;; esac;         \
+               else echo $$f; fi;                                      \
+             done | tr '\012\015' '  '`;                               \
+       $(MAKE) $(AM_MAKEFLAGS) $$target TEST_LOGS="$$list"
+.pl.log:
+       @p='$<'; $(am__check_pre) $(PL_LOG_COMPILE) "$$tst" $(am__check_post)
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -346,6 +477,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:
 
@@ -422,18 +557,19 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: check-am install-am install-strip
-
-.PHONY: all all-am check check-TESTS check-am clean clean-generic \
-       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
+.MAKE: check-am check-html install-am install-strip recheck \
+       recheck-html
+
+.PHONY: all all-am check check-TESTS check-am check-html clean \
+       clean-generic 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 recheck recheck-html uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/lib/Makefile.in b/lib/Makefile.in
index a799aa8..ee031a9 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -229,9 +229,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
diff --git a/lib/am/Makefile.am b/lib/am/Makefile.am
index 9767496..1ab2f31 100644
--- a/lib/am/Makefile.am
+++ b/lib/am/Makefile.am
@@ -2,7 +2,7 @@
 
 ## Makefile for Automake lib/am.
 
-## Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2003, 2004
+## Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2003, 2004, 2008
 ## Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
@@ -23,6 +23,7 @@ amdir = $(pkgvdatadir)/am
 dist_am_DATA = \
 ansi2knr.am \
 check.am \
+check2.am \
 clean-hdr.am \
 clean.am \
 compile.am \
@@ -59,4 +60,5 @@ tags.am \
 texi-vers.am \
 texibuild.am \
 texinfos.am \
+vala.am \
 yacc.am
diff --git a/lib/am/Makefile.in b/lib/am/Makefile.in
index 75e58e1..ce96885 100644
--- a/lib/am/Makefile.in
+++ b/lib/am/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -168,6 +168,7 @@ amdir = $(pkgvdatadir)/am
 dist_am_DATA = \
 ansi2knr.am \
 check.am \
+check2.am \
 clean-hdr.am \
 clean.am \
 compile.am \
@@ -204,6 +205,7 @@ tags.am \
 texi-vers.am \
 texibuild.am \
 texinfos.am \
+vala.am \
 yacc.am
 
 all: all-am
@@ -218,9 +220,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
diff --git a/lib/am/check.am b/lib/am/check.am
index ca400fe..00b80d6 100644
--- a/lib/am/check.am
+++ b/lib/am/check.am
@@ -38,6 +38,266 @@ endif !%?COLOR%
 
 .PHONY: check-TESTS
 
+if %?PARALLEL_TESTS%
+
+include inst-vars.am
+
+## New parallel test driver.
+##
+## This code is adapted from check.mk which was originally
+## written at EPITA/LRDE, further developed at Gostai, then made
+## its way from GNU coreutils to end up, largely rewritten, in
+## Automake.
+##
+## It provides special support for "unit tests", that is to say,
+## tests that (once run) no longer need to be re-compiled and
+## re-run at each "make check", unless their sources changed.  To
+## enable unit-test supports, set RECHECK_LOGS to empty.  In such a
+## setting, that heavily relies on correct dependencies, its users may
+## prefer to define EXTRA_PROGRAMS instead of check_PROGRAMS, because
+## it allows intertwined compilation and execution of the tests.
+## Sometimes this helps catching errors earlier (you don't have to
+## wait for all the tests to be compiled).
+##
+## Define TEST_SUITE_LOG to be the name of the global log to create.
+## Define TEST_LOGS to the set of logs to include in it.  It defaults
+## to $(TESTS), with `.test' and address@hidden@' removed, and `'.log'
+## appended.
+##
+## In addition to the magic "exit 77 means SKIP" feature (which was
+## imported from automake), there is a magic "exit 99 means FAIL" feature
+## which is useful if you need to issue a hard error no matter whether the
+## test is XFAIL or not.  You can disable this feature by setting the
+## variable DISABLE_HARD_ERRORS to a nonempty value.
+
+# 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 = $(AWK) '{                               \
+  n = split($$0, lines, "\\.  "); max = 0;             \
+  for (i = 1; i <= n; ++i)                             \
+    if (max < length(lines[i]))                                \
+      max = length(lines[i]);                          \
+  for (i = 0; i < max; ++i) line = line "=";           \
+  print line;                                          \
+  for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+  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 address@hidden;                                          \
+trap 'st=$$?; rm -f '\''$(abs_builddir)/address@hidden'\''; (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)
+
+# To be appended to the command running the test.  Handle the stdout
+# and stderr redirection, and catch the exit status.
+am__check_post =                                       \
+>address@hidden 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 address@hidden >>$@;                                               \
+rm -f address@hidden
+
+$(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                                              \
+             PASS:*|XFAIL:*);;                                         \
+             *) echo; cat $$f;;                                        \
+           esac;                                                       \
+         done;                                                         \
+       } >$(TEST_SUITE_LOG).tmp;                                       \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       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;                                                             \
+       test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
+       $(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)";                                \
+       $$exit
+
+RECHECK_LOGS = $(TEST_LOGS)
+
+# Run all the tests.
+check-TESTS:
+## Expand $(RECHECK_LOGS) only once, to avoid exceeding line length limits.
+       @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+## We always have to remove TEST_SUITE_LOG, to ensure its rule is run
+## in any case even in lazy mode: otherwise, if no test needs rerunning,
+## or a prior run plus reruns all happen within the same timestamp
+## (can happen with a prior `make TESTS=<subset>'),
+## then we get no log output.
+## OTOH, this means that, in the rule for `$(TEST_SUITE_LOG)', we
+## cannot use `$?' to compute the set of lazily rerun tests, lest
+## we rely on .PHONY to work portably.
+       @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
+
+AM_RECURSIVE_TARGETS += check
+
+## -------------- ##
+## Produce HTML.  ##
+## -------------- ##
+
+.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 $< >address@hidden
+       @mv address@hidden $@
+
+# Be sure to run check first, and then to convert the result.
+# Beware of concurrent executions.  Run "check" not "check-TESTS", as
+# check-SCRIPTS and other dependencies are rebuilt by the former only.
+# And expect check to fail.
+check-html:
+       @if $(MAKE) $(AM_MAKEFLAGS) check; then                 \
+         rv=0; else rv=$$?;                                    \
+       fi;                                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;   \
+       exit $$rv
+
+.PHONY: check-html
+.MAKE: check-html
+
+AM_RECURSIVE_TARGETS += check-html
+
+## -------------------- ##
+## Rechecking failures. ##
+## -------------------- ##
+
+## Rerun all FAILed or XPASSed tests.
+recheck recheck-html:
+       @target=`echo $@ | sed 's,^re,,'`;                              \
+       list='$(TEST_LOGS)';                                            \
+       list=`for f in $$list; do                                       \
+               test -f $$f || continue;                                \
+               if read line < $$f; then                                \
+                 case $$line in FAIL*|XPASS*) echo $$f;; esac;         \
+               else echo $$f; fi;                                      \
+             done | tr '\012\015' '  '`;                               \
+       $(MAKE) $(AM_MAKEFLAGS) $$target TEST_LOGS="$$list"
+
+.PHONY: recheck recheck-html
+.MAKE: recheck recheck-html
+
+AM_RECURSIVE_TARGETS += recheck recheck-html
+
+else !%?PARALLEL_TESTS%
+
 check-TESTS: $(TESTS)
        @failed=0; all=0; xfail=0; xpass=0; skip=0; \
        srcdir=$(srcdir); export srcdir; \
@@ -138,3 +398,5 @@ check-TESTS: $(TESTS)
          echo "$$dashes$$std"; \
          test "$$failed" -eq 0; \
        else :; fi
+
+endif !%?PARALLEL_TESTS%
diff --git a/lib/am/lex.am b/lib/am/check2.am
similarity index 53%
copy from lib/am/lex.am
copy to lib/am/check2.am
index b44daf1..3e9eed2 100644
--- a/lib/am/lex.am
+++ b/lib/am/check2.am
@@ -1,5 +1,5 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 2001, 2002, 2003, 2004, 2006  Free Software Foundation, Inc.
+## Copyright (C) 2008 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -14,16 +14,16 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-## See the comment about am__skipyacc in yacc.am.
-if %?MAINTAINER-MODE%
-if %?FIRST%
address@hidden@am__skiplex = test -f $@ ||
-endif %?FIRST%
-endif %?MAINTAINER-MODE%
-
-?GENERIC?%EXT%%DERIVED-EXT%:
+## From a test file to a log file.
+?GENERIC?%EXT%.log:
 ?!GENERIC?%OBJ%: %SOURCE%
-?GENERIC?      $(am__skiplex) $(SHELL) $(YLWRAP) %SOURCE% $(LEX_OUTPUT_ROOT).c 
%OBJ% -- %COMPILE%
-?!GENERIC??DIST_SOURCE?        $(am__skiplex) \
-## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     $(SHELL) $(YLWRAP) `test -f '%SOURCE%' || echo 
'$(srcdir)/'`%SOURCE% $(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
+       @p='%SOURCE%'; $(am__check_pre) %COMPILE% "$$tst" $(am__check_post)
+
+## If no programs are built in this package, then this rule is removed
+## at automake time.  Otherwise, %am__EXEEXT% expands to a configure time
+## conditional, true if $(EXEEXT) is nonempty, thus this rule does not
+## conflict with the previous one.
+if %am__EXEEXT%
+?GENERIC?%EXT%$(EXEEXT).log:
+       @p='%SOURCE%'; $(am__check_pre) %COMPILE% "$$tst" $(am__check_post)
+endif %am__EXEEXT%
diff --git a/lib/am/configure.am b/lib/am/configure.am
index e24e9a6..f88665c 100644
--- a/lib/am/configure.am
+++ b/lib/am/configure.am
@@ -1,6 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2008  Free Software
-## Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 2004, 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
@@ -39,8 +39,8 @@ endif %?TOPDIR_P%
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-?TOPDIR_P?           echo ' cd $(srcdir) && $(AUTOMAKE) --%STRICTNESS% 
%USE-DEPS%'; \
-?TOPDIR_P?           $(am__cd) $(srcdir) && $(AUTOMAKE) --%STRICTNESS% 
%USE-DEPS% \
+?TOPDIR_P?           echo ' cd $(srcdir) && $(AUTOMAKE) %AUTOMAKE-OPTIONS%'; \
+?TOPDIR_P?           $(am__cd) $(srcdir) && $(AUTOMAKE) %AUTOMAKE-OPTIONS% \
 ?TOPDIR_P?             && exit 0; \
 ?!TOPDIR_P?          ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) 
am--refresh ) \
 ## If on the other hand, subdir/Makefile.in has been removed, then toplevel
@@ -52,9 +52,9 @@ endif %?TOPDIR_P%
          esac; \
        done; \
 ## Otherwise, rebuild only this file.
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --%STRICTNESS% %USE-DEPS% 
%MAKEFILE-AM-SOURCES%'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) %AUTOMAKE-OPTIONS% 
%MAKEFILE-AM-SOURCES%'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --%STRICTNESS% %USE-DEPS% %MAKEFILE-AM-SOURCES%
+         $(AUTOMAKE) %AUTOMAKE-OPTIONS% %MAKEFILE-AM-SOURCES%
 
 ## Ensure that GNU make doesn't remove Makefile if ./config.status (below)
 ## is interrupted.  Otherwise, the user would need to know to rerun
diff --git a/lib/am/depend2.am b/lib/am/depend2.am
index 1a13bd2..579ecdd 100644
--- a/lib/am/depend2.am
+++ b/lib/am/depend2.am
@@ -1,6 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
 ## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-## 2003, 2004, 2006, 2008  Free Software Foundation, Inc.
+## 2003, 2004, 2006, 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
@@ -63,12 +63,15 @@ if %?NONLIBTOOL%
 if %FASTDEP%
 ## In fast-dep mode, we can always use -o.
 ## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     %COMPILE% -MT %OBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o %OBJ% 
%SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
-?GENERIC??!SUBDIROBJ?  %COMPILE% -MT %OBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o 
%OBJ% %SOURCEFLAG%%SOURCE%
-?GENERIC??SUBDIROBJ?   depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+?!GENERIC?     %VERBOSE%%COMPILE% -MT %OBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o 
%OBJ% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+?!GENERIC?     %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??!SUBDIROBJ?  %VERBOSE%%COMPILE% -MT %OBJ% -MD -MP -MF %DEPBASE%.Tpo 
%-c% -o %OBJ% %SOURCEFLAG%%SOURCE%
+?GENERIC??!SUBDIROBJ?  %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??SUBDIROBJ?   %VERBOSE%depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
 ?GENERIC??SUBDIROBJ?   %COMPILE% -MT %OBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o 
%OBJ% %SOURCEFLAG%%SOURCE% &&\
-       $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
 else !%FASTDEP%
+?VERBOSE?      %VERBOSE% @AM_BACKSLASH@
 if %AMDEP%
        source='%SOURCE%' object='%OBJ%' libtool=no @AMDEPBACKSLASH@
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
@@ -88,12 +91,15 @@ endif !%FASTDEP%
 if %FASTDEP%
 ## In fast-dep mode, we can always use -o.
 ## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     %COMPILE% -MT %OBJOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o 
%OBJOBJ% %SOURCEFLAG%`if test -f '%SOURCE%'; then $(CYGPATH_W) '%SOURCE%'; else 
$(CYGPATH_W) '$(srcdir)/%SOURCE%'; fi`
-?GENERIC??!SUBDIROBJ?  %COMPILE% -MT %OBJOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) '%SOURCE%'`
-?GENERIC??SUBDIROBJ?   depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+?!GENERIC?     %VERBOSE%%COMPILE% -MT %OBJOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %OBJOBJ% %SOURCEFLAG%`if test -f '%SOURCE%'; then $(CYGPATH_W) '%SOURCE%'; 
else $(CYGPATH_W) '$(srcdir)/%SOURCE%'; fi`
+?!GENERIC?     %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??!SUBDIROBJ?  %VERBOSE%%COMPILE% -MT %OBJOBJ% -MD -MP -MF 
%DEPBASE%.Tpo %-c% -o %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) '%SOURCE%'`
+?GENERIC??!SUBDIROBJ?  %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??SUBDIROBJ?   %VERBOSE%depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
 ?GENERIC??SUBDIROBJ?   %COMPILE% -MT %OBJOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) '%SOURCE%'` &&\
-       $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Po
 else !%FASTDEP%
+?VERBOSE?      %VERBOSE% @AM_BACKSLASH@
 if %AMDEP%
        source='%SOURCE%' object='%OBJOBJ%' libtool=no @AMDEPBACKSLASH@
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
@@ -115,12 +121,15 @@ if %?LIBTOOL%
 if %FASTDEP%
 ## In fast-dep mode, we can always use -o.
 ## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     %LTCOMPILE% -MT %LTOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% -o 
%LTOBJ% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
-?GENERIC??!SUBDIROBJ?  %LTCOMPILE% -MT %LTOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %LTOBJ% %SOURCEFLAG%%SOURCE%
-?GENERIC??SUBDIROBJ?   depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+?!GENERIC?     %VERBOSE%%LTCOMPILE% -MT %LTOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %LTOBJ% %SOURCEFLAG%`test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+?!GENERIC?     %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Plo
+?GENERIC??!SUBDIROBJ?  %VERBOSE%%LTCOMPILE% -MT %LTOBJ% -MD -MP -MF 
%DEPBASE%.Tpo %-c% -o %LTOBJ% %SOURCEFLAG%%SOURCE%
+?GENERIC??!SUBDIROBJ?  %SILENT%$(am__mv) %DEPBASE%.Tpo %DEPBASE%.Plo
+?GENERIC??SUBDIROBJ?   %VERBOSE%depbase=`echo %OBJ% | sed 
's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
 ?GENERIC??SUBDIROBJ?   %LTCOMPILE% -MT %LTOBJ% -MD -MP -MF %DEPBASE%.Tpo %-c% 
-o %LTOBJ% %SOURCEFLAG%%SOURCE% &&\
-       $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Plo
+?GENERIC??SUBDIROBJ?   $(am__mv) %DEPBASE%.Tpo %DEPBASE%.Plo
 else !%FASTDEP%
+?VERBOSE?      %VERBOSE% @AM_BACKSLASH@
 if %AMDEP%
        source='%SOURCE%' object='%LTOBJ%' libtool=yes @AMDEPBACKSLASH@
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
diff --git a/lib/am/lex.am b/lib/am/lex.am
index b44daf1..1b6c475 100644
--- a/lib/am/lex.am
+++ b/lib/am/lex.am
@@ -1,5 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 2001, 2002, 2003, 2004, 2006  Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 2004, 2006, 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
@@ -23,7 +24,8 @@ endif %?MAINTAINER-MODE%
 
 ?GENERIC?%EXT%%DERIVED-EXT%:
 ?!GENERIC?%OBJ%: %SOURCE%
-?GENERIC?      $(am__skiplex) $(SHELL) $(YLWRAP) %SOURCE% $(LEX_OUTPUT_ROOT).c 
%OBJ% -- %COMPILE%
+?GENERIC?      %VERBOSE%$(am__skiplex) $(SHELL) $(YLWRAP) %SOURCE% 
$(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
+?!GENERIC?     %VERBOSE% \
 ?!GENERIC??DIST_SOURCE?        $(am__skiplex) \
 ## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
 ?!GENERIC?     $(SHELL) $(YLWRAP) `test -f '%SOURCE%' || echo 
'$(srcdir)/'`%SOURCE% $(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
diff --git a/lib/am/library.am b/lib/am/library.am
index 8bf83e5..79d36b6 100644
--- a/lib/am/library.am
+++ b/lib/am/library.am
@@ -1,5 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 1999, 2003 Free Software Foundation, Inc.
+## Copyright (C) 1994, 1995, 1996, 1999, 2003, 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
@@ -14,6 +15,6 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 %LIBRARY%: $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_DEPENDENCIES) %DIRSTAMP%
-       -rm -f %LIBRARY%
-       $(%XLIBRARY%_AR) %LIBRARY% $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_LIBADD)
-       $(RANLIB) %LIBRARY%
+       %SILENT%-rm -f %LIBRARY%
+       %VERBOSE%$(%XLIBRARY%_AR) %LIBRARY% $(%XLIBRARY%_OBJECTS) 
$(%XLIBRARY%_LIBADD)
+       %SILENT%$(RANLIB) %LIBRARY%
diff --git a/lib/am/ltlibrary.am b/lib/am/ltlibrary.am
index 228f02e..ba8526d 100644
--- a/lib/am/ltlibrary.am
+++ b/lib/am/ltlibrary.am
@@ -1,5 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 2003, 2005 Free Software Foundation, Inc.
+## Copyright (C) 1994, 1995, 1996, 2003, 2005, 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
@@ -14,4 +15,4 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 %LTLIBRARY%: $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_DEPENDENCIES) %DIRSTAMP%
-       $(%XLINK%) %RPATH% $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_LIBADD) 
$(LIBS)
+       %VERBOSE%$(%XLINK%) %RPATH% $(%XLTLIBRARY%_OBJECTS) 
$(%XLTLIBRARY%_LIBADD) $(LIBS)
diff --git a/lib/am/program.am b/lib/am/program.am
index 65ba506..8f69c77 100644
--- a/lib/am/program.am
+++ b/lib/am/program.am
@@ -21,4 +21,4 @@
 ## Or maybe not... sadly, incremental linkers are rarer than losing
 ## systems.
        @rm -f %PROGRAM%%EXEEXT%
-       $(%XLINK%) $(%XPROGRAM%_OBJECTS) $(%XPROGRAM%_LDADD) $(LIBS)
+       %VERBOSE%$(%XLINK%) $(%XPROGRAM%_OBJECTS) $(%XPROGRAM%_LDADD) $(LIBS)
diff --git a/lib/am/texinfos.am b/lib/am/texinfos.am
index e9a8483..5dda4ab 100644
--- a/lib/am/texinfos.am
+++ b/lib/am/texinfos.am
@@ -385,9 +385,16 @@ if %?LOCAL-TEXIS%
 .PHONY mostlyclean-am: mostlyclean-aminfo
 .PHONY: mostlyclean-aminfo
 mostlyclean-aminfo:
-## Use `-rf', not just `-f', because %TEXICLEAN% also contains
-## any directory created by `makeinfo --html'.
-       -rm -rf %TEXICLEAN%
+## Use `-rf', not just `-f', because the %*CLEAN% substitutions can also
+## contain any directory created by `makeinfo --html'.
+       -rm -rf %MOSTLYCLEAN%
+
+.PHONY clean-am: clean-aminfo
+clean-aminfo:
+## Use `-rf', not just `-f', because the %*CLEAN% substitutions can also
+## contain any directory created by `makeinfo --html'.
+?TEXICLEAN?    -test -z "%TEXICLEAN%" \
+?TEXICLEAN?    || rm -rf %TEXICLEAN%
 
 .PHONY maintainer-clean-am: maintainer-clean-aminfo
 maintainer-clean-aminfo:
@@ -397,7 +404,11 @@ maintainer-clean-aminfo:
          echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] 
$$i_i[0-9][0-9]"; \
          rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
        done
+## Use `-rf', not just `-f', because the %*CLEAN% substitutions can also
+## contain any directory created by `makeinfo --html'.
+?MAINTCLEAN?   -test -z "%MAINTCLEAN%" \
+?MAINTCLEAN?   || rm -rf %MAINTCLEAN%
 
 ?CYGNUS?.PHONY: clean-info
-?CYGNUS?clean-info: mostlyclean-aminfo
+?CYGNUS?clean-info: mostlyclean-aminfo clean-aminfo
 endif %?LOCAL-TEXIS%
diff --git a/lib/am/header.am b/lib/am/vala.am
similarity index 83%
copy from lib/am/header.am
copy to lib/am/vala.am
index 17dfdb9..ed12dc5 100644
--- a/lib/am/header.am
+++ b/lib/am/vala.am
@@ -1,5 +1,5 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1994, 1995, 1996, 1998, 1999, 2001, 2003 Free Software 
Foundation, Inc.
+## Copyright (C) 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
@@ -14,6 +14,4 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-
-## Exactly the same as data.am.
-include data.am
+## There is no rule here.  :-)
diff --git a/lib/am/yacc.am b/lib/am/yacc.am
index 50fd7fa..df9a766 100644
--- a/lib/am/yacc.am
+++ b/lib/am/yacc.am
@@ -1,5 +1,5 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2006
+## Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2006, 2009
 ##   Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
@@ -41,7 +41,8 @@ endif %?MAINTAINER-MODE%
 
 ?GENERIC?%EXT%%DERIVED-EXT%:
 ?!GENERIC?%OBJ%: %SOURCE%
-?GENERIC?      $(am__skipyacc) $(SHELL) $(YLWRAP) %SOURCE% y.tab.c %OBJ% 
y.tab.h %BASE%.h y.output %BASE%.output -- %COMPILE%
+?GENERIC?      %VERBOSE%$(am__skipyacc) $(SHELL) $(YLWRAP) %SOURCE% y.tab.c 
%OBJ% y.tab.h %BASE%.h y.output %BASE%.output -- %COMPILE%
+?!GENERIC?     %VERBOSE% \
 ?!GENERIC??DIST_SOURCE?        $(am__skipyacc) \
 ## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
 ?!GENERIC?     $(SHELL) $(YLWRAP) `test -f '%SOURCE%' || echo 
'$(srcdir)/'`%SOURCE% y.tab.c %OBJ% y.tab.h %BASE%.h y.output %BASE%.output -- 
%COMPILE%
diff --git a/m4/Makefile.am b/m4/Makefile.am
index 9f5e1c2..b8194d6 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -3,7 +3,7 @@
 ## Makefile for Automake m4.
 
 ## Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2006,
-## 2008 Free Software Foundation, Inc.
+## 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
@@ -52,10 +52,12 @@ python.m4 \
 regex.m4 \
 runlog.m4 \
 sanity.m4 \
+silent.m4 \
 strip.m4 \
 substnot.m4 \
 tar.m4 \
-upc.m4
+upc.m4 \
+vala.m4
 
 EXTRA_DIST = dirlist amversion.in
 
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 972b980..7cc2c68 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -197,10 +197,12 @@ python.m4 \
 regex.m4 \
 runlog.m4 \
 sanity.m4 \
+silent.m4 \
 strip.m4 \
 substnot.m4 \
 tar.m4 \
-upc.m4
+upc.m4 \
+vala.m4
 
 EXTRA_DIST = dirlist amversion.in
 all: all-am
@@ -215,9 +217,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
diff --git a/m4/amversion.m4 b/m4/amversion.m4
index ee7dba0..c6a24af 100644
--- a/m4/amversion.m4
+++ b/m4/amversion.m4
@@ -12,10 +12,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10a'
+[am__api_version='1.10c'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10a], [],
+m4_if([$1], [1.10c], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -31,7 +31,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10a])dnl
+[AM_AUTOMAKE_VERSION([1.10c])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/m4/init.m4 b/m4/init.m4
index 51fe69a..365c9ac 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -7,7 +7,7 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 15
+# serial 16
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -100,8 +100,21 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
                  [define([AC_PROG_OBJC],
                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
diff --git a/m4/silent.m4 b/m4/silent.m4
new file mode 100644
index 0000000..6d2a1a2
--- /dev/null
+++ b/m4/silent.m4
@@ -0,0 +1,27 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2009  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
diff --git a/m4/vala.m4 b/m4/vala.m4
new file mode 100644
index 0000000..d3f73a5
--- /dev/null
+++ b/m4/vala.m4
@@ -0,0 +1,29 @@
+# Autoconf support for the Vala compiler
+
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# Check whether the Vala compiler exists in `PATH'. If it is found, the
+# variable VALAC is set. Optionally a minimum release number of the
+# compiler can be requested.
+#
+# AM_PROG_VALAC([MINIMUM-VERSION])
+# --------------------------------
+AC_DEFUN([AM_PROG_VALAC],
+[AC_PATH_PROG([VALAC], [valac], [])
+ AS_IF([test -z "$VALAC"],
+   [AC_MSG_WARN([No Vala compiler found.  You will not be able to compile 
.vala source files.])],
+   [AS_IF([test -n "$1"],
+      [AC_MSG_CHECKING([$VALAC is at least version $1])
+       am__vala_version=`$VALAC --version`
+       AS_VERSION_COMPARE([$1], ["$am__vala_version"],
+         [AC_MSG_RESULT([yes])],
+         [AC_MSG_RESULT([yes])],
+         [AC_MSG_RESULT([no])
+          AC_MSG_ERROR([Vala $1 not found.])])])])
+])
diff --git a/tests/.gitignore b/tests/.gitignore
index f1c3bff..cfd4565 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,4 +1,9 @@
 aclocal-*
 automake-*
 defs
+defs-p
+parallel-tests.am
 *.dir
+*.log
+*.log-t
+*-p.test
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9af8512..c36237e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,10 +1,26 @@
 ## Process this file with automake to create Makefile.in
 
-XFAIL_TESTS =                                  \
+XFAIL_TESTS =                                  \
 all.test                                       \
 auxdir2.test                                   \
 cond17.test                                    \
-txinfo5.test
+txinfo5.test                                   \
+vala5.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 \
@@ -97,6 +113,7 @@ check7.test \
 check8.test \
 check9.test \
 check10.test \
+check11.test \
 checkall.test \
 clean.test \
 clean2.test \
@@ -240,6 +257,8 @@ distcom7.test \
 distdir.test \
 distname.test \
 dollar.test \
+dollarvar.test \
+dollarvar2.test \
 double.test \
 dup2.test \
 else.test \
@@ -265,6 +284,7 @@ extra6.test \
 extra7.test \
 extra8.test \
 f90only.test \
+flavor.test \
 flibs.test \
 fn99.test \
 fn99subdir.test \
@@ -472,6 +492,15 @@ 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 \
+parallel-tests7.test \
+parallel-tests8.test \
+parallel-tests9.test \
 parse.test \
 percent.test \
 percent2.test \
@@ -543,6 +572,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 \
@@ -611,6 +647,7 @@ suffix9.test \
 suffix10.test \
 suffix11.test \
 suffix12.test \
+suffix13.test \
 symlink.test \
 symlink2.test \
 symlink3.test \
@@ -650,12 +687,19 @@ txinfo29.test \
 txinfo30.test \
 txinfo31.test \
 txinfo32.test \
+txinfo33.test \
 transform.test \
 transform2.test \
 unused.test \
 upc.test \
 upc2.test \
 upc3.test \
+vala.test \
+vala1.test \
+vala2.test \
+vala3.test \
+vala4.test \
+vala5.test \
 vars.test \
 vars3.test \
 vartar.test \
@@ -684,15 +728,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)
 
-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 --git a/tests/Makefile.in b/tests/Makefile.in
index 40fcf15..b339664 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10a from Makefile.am.
+# Makefile.in generated by automake 1.10c from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -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 \
@@ -66,6 +67,74 @@ test "X$(AM_COLOR_TESTS)" != Xno \
   blu=''; \
   std=''; \
 }
+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 = $(AWK) '{                               \
+  n = split($$0, lines, "\\.  "); max = 0;             \
+  for (i = 1; i <= n; ++i)                             \
+    if (max < length(lines[i]))                                \
+      max = length(lines[i]);                          \
+  for (i = 0; i < max; ++i) line = line "=";           \
+  print line;                                          \
+  for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+  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 address@hidden;                                          \
+trap 'st=$$?; rm -f '\''$(abs_builddir)/address@hidden'\''; (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)
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
+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_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -159,8 +228,32 @@ XFAIL_TESTS = \
 all.test                                       \
 auxdir2.test                                   \
 cond17.test                                    \
-txinfo5.test
+txinfo5.test                                   \
+vala5.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 \
@@ -252,6 +345,7 @@ check7.test \
 check8.test \
 check9.test \
 check10.test \
+check11.test \
 checkall.test \
 clean.test \
 clean2.test \
@@ -395,6 +489,8 @@ distcom7.test \
 distdir.test \
 distname.test \
 dollar.test \
+dollarvar.test \
+dollarvar2.test \
 double.test \
 dup2.test \
 else.test \
@@ -420,6 +516,7 @@ extra6.test \
 extra7.test \
 extra8.test \
 f90only.test \
+flavor.test \
 flibs.test \
 fn99.test \
 fn99subdir.test \
@@ -627,6 +724,15 @@ 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 \
+parallel-tests7.test \
+parallel-tests8.test \
+parallel-tests9.test \
 parse.test \
 percent.test \
 percent2.test \
@@ -698,6 +804,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 \
@@ -766,6 +879,7 @@ suffix9.test \
 suffix10.test \
 suffix11.test \
 suffix12.test \
+suffix13.test \
 symlink.test \
 symlink2.test \
 symlink3.test \
@@ -805,12 +919,19 @@ txinfo29.test \
 txinfo30.test \
 txinfo31.test \
 txinfo32.test \
+txinfo33.test \
 transform.test \
 transform2.test \
 unused.test \
 upc.test \
 upc2.test \
 upc3.test \
+vala.test \
+vala1.test \
+vala2.test \
+vala3.test \
+vala4.test \
+vala5.test \
 vars.test \
 vars3.test \
 vartar.test \
@@ -839,16 +960,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)
 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*) \
@@ -857,9 +980,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  
$(am__configure_deps)
              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 \
@@ -891,97 +1014,159 @@ ctags: CTAGS
 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 =                                       \
+>address@hidden 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 address@hidden >>$@;                                               \
+rm -f address@hidden
+
+$(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                                              \
+             PASS:*|XFAIL:*);;                                         \
+             *) echo; cat $$f;;                                        \
+           esac;                                                       \
+         done;                                                         \
+       } >$(TEST_SUITE_LOG).tmp;                                       \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       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;                                                             \
+       test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);       \
+       $(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)";                                \
+       $$exit
+
+# Run all the tests.
+check-TESTS:
+       @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+       @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 $< >address@hidden
+       @mv address@hidden $@
+
+# Be sure to run check first, and then to convert the result.
+# Beware of concurrent executions.  Run "check" not "check-TESTS", as
+# check-SCRIPTS and other dependencies are rebuilt by the former only.
+# And expect check to fail.
+check-html:
+       @if $(MAKE) $(AM_MAKEFLAGS) check; then                 \
+         rv=0; else rv=$$?;                                    \
+       fi;                                                     \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;   \
+       exit $$rv
+recheck recheck-html:
+       @target=`echo $@ | sed 's,^re,,'`;                              \
+       list='$(TEST_LOGS)';                                            \
+       list=`for f in $$list; do                                       \
+               test -f $$f || continue;                                \
+               if read line < $$f; then                                \
+                 case $$line in FAIL*|XPASS*) echo $$f;; esac;         \
+               else echo $$f; fi;                                      \
+             done | tr '\012\015' '  '`;                               \
+       $(MAKE) $(AM_MAKEFLAGS) $$target TEST_LOGS="$$list"
+.test.log:
+       @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1034,6 +1219,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:
 
@@ -1044,13 +1233,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
 
@@ -1110,25 +1300,37 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: check-am install-am install-strip
+.MAKE: check-am check-html install-am install-strip recheck \
+       recheck-html
 
-.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
+       pdf-am ps ps-am recheck recheck-html uninstall uninstall-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 $@
 
+defs-p: defs Makefile.am
+       sed 's,^AM_INIT_AUTOMAKE$$,&([parallel-tests]),' < defs >$@
 
-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
 
 # 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.
diff --git a/tests/README b/tests/README
index 4b63059..c4ff407 100644
--- a/tests/README
+++ b/tests/README
@@ -10,6 +10,9 @@ Running all tests
 
   make check
 
+  You can use `-jN' for faster completion (it even helps on a
+  uniprocessor system, due to unavoidable sleep delays, as
+  noted below).
 
 Interpretation
 --------------
@@ -30,10 +33,13 @@ Getting details from failures
 -----------------------------
 
   Each test is a script.  In a non-VPATH build you can run them
-  directly, they will be verbose.
+  directly, they will be verbose.  By default, verbose output of
+  a test foo.test is retained in the log file foo.log.  A summary
+  log is created in the file test-suite.log.
 
-  Otherwise, you can invoke make as follows, just replace the list
-  of tests by those you want to check.
+  You can limit the set of files using the TESTS variable, and
+  enable detailed test output at the end of the test run with the
+  VERBOSE variable:
 
     env VERBOSE=x TESTS='first.test second.test ...' make -e check
 
@@ -41,10 +47,10 @@ Getting details from failures
 Reporting failures
 ------------------
 
-  Send verbose output of failing tests to <address@hidden>,
-  along with the usual version numbers (which Automake, which
-  Autoconf, which operating system, which make version, which shell,
-  etc.)
+  Send verbose output, i.e., the contents of test-suite.log, of failing
+  tests to <address@hidden>, along with the usual version numbers
+  (which Automake, which Autoconf, which operating system, which make
+  version, which shell, etc.)
 
 
 
@@ -68,7 +74,10 @@ Do
 
   Use `required=...' for required tools.
 
-  Include ./defs (see other tests).
+  Include ./defs (see other tests) for normal tests, ./defs-p for tests
+  that use the `parallel-tests' option.  For the latter, use a name that
+  ends in `-p.test' and does not clash with any generated tests in the
+  suite.
 
   Use `set -e' to catch failures you might not have thought of.
 
@@ -87,11 +96,16 @@ Do
 
   Use `cat' or `grep' to display (part of) files that may be
   interesting for debugging, so that when a user send a verbose
-  output we don't have to ask him for more details.
+  output we don't have to ask him for more details.  Display stderr
+  output on the stderr file descriptor.  If some redirected command
+  is likely to fail, and `set -e' is in effect, display its output
+  even in the failure case, before exiting.
+
+  Use `Exit' rather than `exit' to abort a test.
 
   It's more important to make sure that a feature works, than
   make sure that Automake's output looks correct.  It might look
-  correct and still fails to work.  In other words, prefer
+  correct and still fail to work.  In other words, prefer
   running `make' over grepping `Makefile.in' (or do both).
 
   If you run $AUTOMAKE or $AUTOCONF several times in the same test
@@ -99,6 +113,7 @@ Do
     rm -rf autom4te.cache
   before the following runs.  On fast machines the new `configure.in'
   could otherwise have the same timestamp as the old `autom4te.cache'.
+  Alternatively, use `--force' for subsequent runs of the tools.
 
   Use filenames with two consecutive spaces when testing that some
   code preserves filenames with spaces.  This will catch errors like
@@ -112,7 +127,7 @@ Do
 Do not
 ------
 
-  Do not test an Automake error with `$AUTOMAKE && exit 1', or in three
+  Do not test an Automake error with `$AUTOMAKE && Exit 1', or in three
   years we'll discover that this test failed for some other bogus reason.
   This happened many times.  Better use something like
      AUTOMAKE_fails
diff --git a/tests/check6.test b/tests/check11.test
similarity index 69%
copy from tests/check6.test
copy to tests/check11.test
index 5e102fc..2ee1145 100755
--- a/tests/check6.test
+++ b/tests/check11.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -14,41 +14,40 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test for PR 400: XFAIL_TESTS delimited by TABs.
-# Also test that Solaris make VPATH rewriting is honored
+# Check skip summary.
 
 . ./defs || Exit 1
 
 set -e
 
 cat >> configure.in << 'END'
-AC_PROG_CC
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-TESTS = $(XFAIL_TESTS)
-XFAIL_TESTS = a        b       c
+TESTS = skip skip2
 END
 
-cat >>a <<'END'
+cat >>skip <<'END'
 #! /bin/sh
-exit 1
+exit 77
 END
-
-cp a b
-cp a c
-
-chmod a+x a b c
+chmod a+x skip
+cp skip skip2
 
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
 
+unset TESTS || :
+
 ./configure
-$MAKE check
-$MAKE distclean
-mkdir build
-cd build
-../configure
-$MAKE check
+env TESTS=skip $MAKE -e check >stdout
+cat stdout
+grep '1.*passed' stdout && Exit 1
+
+env TESTS="skip skip2" $MAKE -e check >stdout
+cat stdout
+grep '2.*passed' stdout && Exit 1
+
+:
diff --git a/tests/check5.test b/tests/check5.test
index 58c8607..e2e0210 100755
--- a/tests/check5.test
+++ b/tests/check5.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -52,6 +52,6 @@ test -f ok
 EXEEXT=.bin $MAKE -e print-tests >output
 cat output
 # No am__EXEEXT_* variable is needed.
-grep '_EXEEXT' Makefile.in && Exit 1
+grep '_EXEEXT_[1-9]' Makefile.in && Exit 1
 grep 'BEG: one.bin two.bin :END' output
 $FGREP 'TESTS = $(check_PROGRAMS)' Makefile.in
diff --git a/tests/check8.test b/tests/check8.test
index 242be56..1fe2a53 100755
--- a/tests/check8.test
+++ b/tests/check8.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -67,14 +67,20 @@ $AUTOMAKE -a
 unset TESTS || :
 
 ./configure
-AM_COLOR_TESTS=always $MAKE -e check >stdout && { cat stdout; Exit 1; }
+AM_COLOR_TESTS=always $MAKE -e check >stdout 2>stderr &&
+  { cat stdout; cat stderr >&2; Exit 1; }
 cat stdout
+cat stderr >&2
 grep 'XPASS.* foo$' stdout
 grep '^[^X]*PASS.* sub/foo$' stdout
-grep '^[^X]*PASS.* bar$' stdout
-grep '^[^X]*PASS.* sub/bar$' stdout
-grep '^[^X]*FAIL.* baz$' stdout
-grep 'XFAIL.* sub/baz$' stdout
+grep '^[^X]*PASS.* bar' stdout
+grep '^[^X]*PASS.* sub/bar' stdout
+grep '^[^X]*FAIL.* baz' stdout
+grep 'XFAIL.* sub/baz' stdout
+# parallel-tests should not add circular dependencies.
+# Look for known warnings from a couple of `make' implementations.
+grep -i 'circular.*dependency' stderr && Exit 1
+grep -i 'graph cycles' stderr && Exit 1
 
 $MAKE distclean
 
@@ -87,8 +93,8 @@ cat stdout
 # rewriting (if we fix that, we can still write a separate test for it).
 grep 'XPASS.*foo$' stdout
 grep '^[^X]*PASS.*sub/foo$' stdout
-grep '^[^X]*PASS.*bar$' stdout
-grep '^[^X]*PASS.*sub/bar$' stdout
-grep '^[^X]*FAIL.*baz$' stdout
-grep 'XFAIL.*sub/baz$' stdout
+grep '^[^X]*PASS.*bar' stdout
+grep '^[^X]*PASS.*sub/bar' stdout
+grep '^[^X]*FAIL.*baz' stdout
+grep 'XFAIL.*sub/baz' stdout
 :
diff --git a/tests/check9.test b/tests/check9.test
index 91c37c5..658e636 100755
--- a/tests/check9.test
+++ b/tests/check9.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -26,7 +26,7 @@ cat >> configure.in << 'END'
 AC_PROG_CC
 AC_SUBST([script_tests], ['subst-pass-script.test subst-xfail-script.test'])
 AC_SUBST([prog_tests], ['subst-pass-prog.test$(EXEEXT) 
subst-xfail-prog.test$(EXEEXT)'])
-AC_SUBST([xfail_tests], ['xfail-script.test subst-xfail-script.test xfail-prog 
subst-xfail-prog.test$(EXEEXT)'])
+AC_SUBST([xfail_tests], ['xfail-script.test subst-xfail-script.test 
xfail-prog$(EXEEXT) subst-xfail-prog.test$(EXEEXT)'])
 AC_OUTPUT
 END
 
diff --git a/tests/defs.in b/tests/defs.in
index de0c682..d44ac9f 100644
--- a/tests/defs.in
+++ b/tests/defs.in
@@ -2,7 +2,7 @@
 # @configure_input@
 #
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 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
@@ -40,9 +40,7 @@ test -f ./defs || {
    exit 1
 }
 
-# If srcdir is not set, then we are not running from `make check', be verbose.
 if test -z "$srcdir"; then
-   VERBOSE=x
    # compute $srcdir.
    srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'`
    test "$srcdir" = $0 && srcdir=.
@@ -56,12 +54,6 @@ test -f "$srcdir/defs.in" || {
 
 me=`echo "$0" | sed -e 's,.*[\\/],,;s/\.test$//'`
 
-# See how redirections should work.  User can set VERBOSE to see all
-# output.
-test -z "$VERBOSE" && {
-   exec > /dev/null 2>&1
-}
-
 # Make sure we override the user shell.
 SHELL='@SHELL@'
 export SHELL
@@ -194,6 +186,16 @@ do
       rm -rf $ro_dir_temp
       test $create_status = 0 && exit 77
       ;;
+    rst2html)
+      # Try the variants that are tried in check.am.
+      while :; do
+       for r2h in $RST2HTML rst2html rst2html.py; do
+         echo "$me: running $r2h --version"
+         $r2h --version && break 2
+       done
+       exit 77
+      done
+      ;;
     runtest)
       # DejaGnu's runtest program. We rely on being able to specify
       # the program on the runtest command-line. This requires
@@ -292,6 +294,17 @@ unset MFLAGS
 unset MAKEFLAGS
 unset MAKELEVEL
 unset DESTDIR
+# Unset verbosity flag.
+unset V
+# Also unset variables that control our test driver.  While not
+# conceptually independent, they cause some changed semantics we
+# need to control (and test for) in some of the tests to ensure
+# backward-compatible behavior.
+unset DISABLE_HARD_ERRORS
+unset TESTS
+unset TEST_LOGS
+unset RECHECK_LOGS
+unset VERBOSE
 
 echo "=== Running test $0"
 
@@ -309,8 +322,8 @@ case $required in
     if test -f $aclocaldir/dirlist; then
        extra_includes=`
        <$aclocaldir/dirlist \
-       sed -ne 's/#.*//;s/[     ][      ]*$//g;s/..*/ -I &/p' |
-        tr -d '\n'`
+       sed  's/#.*//;s/[        ][      ]*$//g' \
+       | while read dir; do test ! -d "$dir" || echo "-I $dir"; done`
     else :; fi
 
     libtool_found=no
@@ -396,10 +409,7 @@ AUTOMAKE_fails ()
   AUTOMAKE_run 1 ${1+"$@"}
 }
 
-# Turn on shell traces when VERBOSE is set.
-if test -n "$VERBOSE"; then
-  set -x
-else
-  :
-fi
+# Turn on shell traces.
+set -x
+
 pwd
diff --git a/tests/dollarvar.test b/tests/dollarvar.test
new file mode 100755
index 0000000..ea042b5
--- /dev/null
+++ b/tests/dollarvar.test
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure that -Wportability complains about recursive
+# variable expansions and variables containing `$', `$(...)', or
+# `${...}' in the name.  We support recursive variable expansions using
+# the latter two constructs for the `silent-rules' option, and they are
+# rather widely supported in practice.  OTOH variable definitions
+# containing a `$' on the left hand side of an assignment are not
+# portable in practice, even though POSIX allows them.  :-/
+
+. ./defs
+
+set -e
+
+cat >Makefile.am <<'EOF'
+x = 1
+foo$x = 1
+bar$(x) = 1
+baz${x} = 1
+bla = $(foo$x)
+bli = $(foo$(x))
+blo = $(foo${x})
+EOF
+
+$ACLOCAL
+AUTOMAKE_fails -Wportability
+grep 'Makefile.am:2' stderr
+grep 'Makefile.am:3' stderr
+grep 'Makefile.am:4' stderr
+grep 'Makefile.am:5' stderr
+grep 'Makefile.am:6' stderr
+grep 'Makefile.am:7' stderr
+
+# On the other hand, if we allow `silent-rules' mode, then we need to
+# allow recursive variable expansion, too.
+
+# This should work with the AM_SILENT_RULES macro.
+$sleep
+echo 'AM_SILENT_RULES' >> configure.in
+
+$ACLOCAL --force
+AUTOMAKE_fails -Wportability
+grep 'Makefile.am:2' stderr
+grep 'Makefile.am:3' stderr
+grep 'Makefile.am:4' stderr
+grep 'Makefile.am:5' stderr
+grep 'Makefile.am:6' stderr && Exit 1
+grep 'Makefile.am:7' stderr && Exit 1
+
+
+:
diff --git a/tests/colneq.test b/tests/dollarvar2.test
similarity index 65%
copy from tests/colneq.test
copy to tests/dollarvar2.test
index 39ef93d..676cde2 100755
--- a/tests/colneq.test
+++ b/tests/dollarvar2.test
@@ -1,5 +1,5 @@
-#! /bin/sh
-# Copyright (C) 1996, 2001, 2002, 2003  Free Software Foundation, Inc.
+#!/bin/sh
+# Copyright (C) 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
@@ -14,21 +14,25 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test that := definitions produce warnings, but otherwise work.
+# Test to make sure that -Wportability turns on portability-recursive,
+# likewise for -Wno-...
 
-. ./defs || Exit 1
+. ./defs
 
 set -e
 
-cat > Makefile.am << 'END'
-ICONS := $(wildcard *.xbm)
-data_DATA = $(ICONS)
-END
+cat >Makefile.am <<'EOF'
+x = 1
+bla = $(foo$(x))
+EOF
 
 $ACLOCAL
-AUTOMAKE_fails
-grep ':=.*not portable' stderr
 
+# $AUTOMAKE already contains -Wall -Werror.
+AUTOMAKE_fails -Wportability
+$AUTOMAKE --force -Wno-all
+$AUTOMAKE --force -Wno-portability
 echo 'AUTOMAKE_OPTIONS = -Wno-portability' >> Makefile.am
-$AUTOMAKE
-grep 'ICONS :=' Makefile.in
+$AUTOMAKE --force
+
+:
diff --git a/tests/maken.test b/tests/flavor.test
similarity index 50%
copy from tests/maken.test
copy to tests/flavor.test
index 8219ec6..c9ea970 100755
--- a/tests/maken.test
+++ b/tests/flavor.test
@@ -14,48 +14,48 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Ensure that `make -n dist' and `make -n distcheck' do not change files
-# on disk, due to GNU make executing rules containing `$(MAKE)'.
-
-# Please keep this test in sync with sister test maken2.test.
+# Make sure flavors like `cygnus', `gnu', `gnits' and command line
+# options like `--ignore-deps' and `--silent-rules' are preserved across
+# automake reruns.
 
 . ./defs || Exit 1
 
 set -e
 
-mkdir sub
-
 cat >> configure.in << 'END'
-AC_CONFIG_FILES([sub/Makefile])
+AM_MAINTAINER_MODE
 AC_OUTPUT
 END
 
-cat > Makefile.am <<'END'
-SUBDIRS = sub
-distcheck-hook:
-       @: > stamp-distcheck-hook
-test-no-distdir:
-       test ! -d $(distdir)
-       test ! -f stamp-distcheck-hook
-       test ! -f sub/stamp-sub-dist-hook
-END
-cat >sub/Makefile.am <<'END'
-dist-hook:
-       @: > stamp-sub-dist-hook
-END
+: > Makefile.am
+: > NEWS
+: > README
+: > AUTHORS
+: > ChangeLog
+: > THANKS
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
-./configure
-
-$sleep
-echo stamp > stampfile
-$sleep
-for target in dist distcheck; do
-  $MAKE -n $target
-  $MAKE test-no-distdir
-  test `ls -1t | sed 1q` = stampfile
+# Order flavors so that all needed files are installed early.
+for flavor in --gnits --gnu --foreign --cygnus --ignore-deps
+do
+  $AUTOMAKE --add-missing $flavor
+  ./configure --enable-maintainer-mode
+  grep " $flavor" Makefile
+  $MAKE
+
+  # Two code paths in configure.am:
+  # - either a file in $(am__configure_deps) has been updated ...
+  $sleep
+  touch aclocal.m4
+  $MAKE
+  grep " $flavor" Makefile
+
+  # - ... or not; i.e., Makefile.am or an included file has.
+  $sleep
+  touch Makefile.am
+  $MAKE
+  grep " $flavor" Makefile
 done
 
-Exit 0
+:
diff --git a/tests/gen-parallel-tests b/tests/gen-parallel-tests
new file mode 100755
index 0000000..4a71a73
--- /dev/null
+++ b/tests/gen-parallel-tests
@@ -0,0 +1,26 @@
+#! /bin/sh
+# Generate parallel-tests.am.
+#
+# For each test in the TESTS list in this Makefile.am file, that itself
+# tests features of the TESTS automake interface, generate a sibling
+# test that does likewise, but with the option `parallel-tests' enabled.
+
+set -e
+
+tests=`sed -n '/^TESTS =/,/^$/s/\(.*\.test\).*/\1/p' Makefile.am`
+{
+  grep -l '^TESTS ' $tests
+  grep -l ' TESTS ' $tests
+} |
+grep -v '.-p\.test' |
+LC_ALL=C sort -u |
+while read tst; do
+  if grep '^[^#]*parallel-tests' $tst >/dev/null \
+     || grep '^\. \./defs-p' $tst >/dev/null
+  then :; else echo $tst; fi;
+done |
+{
+  echo "## Generated by gen-parallel-tests.  Edit Makefile.am instead of this."
+  echo "parallel_tests = \\"
+  sed 's,\.test$,-p.test,; $!s,$, \\,'
+}
diff --git a/tests/instdir-java.test b/tests/instdir-java.test
index 54826c8..186871c 100755
--- a/tests/instdir-java.test
+++ b/tests/instdir-java.test
@@ -16,12 +16,13 @@
 
 # If $(javadir) is the empty string, then nothing should be installed there.
 
-required=gcj
 . ./defs || Exit 1
 
 set -e
 
 cat >>configure.in <<'END'
+AC_CHECK_PROG([HAS_JAVAC], [javac], [:], [exit])
+($HAS_JAVAC 77); $HAS_JAVAC 77
 AC_OUTPUT
 END
 
diff --git a/tests/instfail-info.test b/tests/instfail-info.test
index ba2b5b6..f2590f4 100755
--- a/tests/instfail-info.test
+++ b/tests/instfail-info.test
@@ -19,9 +19,7 @@
 
 # This test has a few sister tests, for java, info, libtool.
 
-
-# non-root should catch 'chmod a-r'-challenged file systems.
-required='non-root makeinfo'
+required='makeinfo'
 . ./defs || Exit 1
 
 set -e
@@ -59,6 +57,7 @@ $MAKE uninstall
 for file in info1.info
 do
   chmod a-r $file
+  test ! -r $file || Exit 77
   $MAKE install-data && Exit 1
   chmod u+r $file
 done
diff --git a/tests/instfail-java.test b/tests/instfail-java.test
index 44b5971..5df8a6d 100755
--- a/tests/instfail-java.test
+++ b/tests/instfail-java.test
@@ -19,9 +19,6 @@
 
 # This is the java sister test of instfail.test.
 
-
-# non-root should catch 'chmod a-r'-challenged file systems.
-required='non-root'
 . ./defs || Exit 1
 
 set -e
@@ -59,6 +56,7 @@ $MAKE uninstall
 for file in java1.class
 do
   chmod a-r $file
+  test ! -r $file || Exit 77
   $MAKE install-data && Exit 1
   chmod u+r $file
 done
diff --git a/tests/instfail-libtool.test b/tests/instfail-libtool.test
index 1b6bd2b..d7a78ae 100755
--- a/tests/instfail-libtool.test
+++ b/tests/instfail-libtool.test
@@ -19,9 +19,7 @@
 
 # This is the libtool sister test of instfail.test
 
-
-# non-root should catch 'chmod a-r'-challenged file systems.
-required='non-root libtool libtoolize'
+required='libtool libtoolize'
 . ./defs || Exit 1
 
 set -e
@@ -65,6 +63,14 @@ $MAKE
 $MAKE install
 $MAKE uninstall
 
+for file in liblt1.la libltn1.la
+do
+  chmod a-r $file
+  test ! -r $file || Exit 77
+  $MAKE install-exec && Exit 1
+  chmod u+r $file
+done
+
 $MAKE unreadable-prog
 $MAKE install-exec && Exit 1
 $MAKE readable-prog
@@ -73,11 +79,4 @@ $MAKE unreadable-progn
 $MAKE install-exec && Exit 1
 $MAKE readable-progn
 
-for file in liblt1.la libltn1.la
-do
-  chmod a-r $file
-  $MAKE install-exec && Exit 1
-  chmod u+r $file
-done
-
 :
diff --git a/tests/instfail.test b/tests/instfail.test
index a09ca17..8b928cc 100755
--- a/tests/instfail.test
+++ b/tests/instfail.test
@@ -19,9 +19,6 @@
 
 # This test has a few sister tests, for java, info, libtool.
 
-
-# non-root should catch 'chmod a-r'-challenged file systems.
-required=non-root
 . ./defs || Exit 1
 
 set -e
@@ -70,6 +67,14 @@ $MAKE
 $MAKE install
 $MAKE uninstall
 
+for file in lib1.a libn1.a
+do
+  chmod a-r $file
+  test ! -r $file || Exit 77
+  $MAKE install-exec && Exit 1
+  chmod u+r $file
+done
+
 $MAKE unreadable-prog
 $MAKE install-exec && Exit 1
 $MAKE readable-prog
@@ -78,13 +83,6 @@ $MAKE unreadable-progn
 $MAKE install-exec && Exit 1
 $MAKE readable-progn
 
-for file in lib1.a libn1.a
-do
-  chmod a-r $file
-  $MAKE install-exec && Exit 1
-  chmod u+r $file
-done
-
 if grep "^EMACS = no" Makefile; then :; else
   for file in lisp1.el lisp1.elc
   do
diff --git a/tests/instmany-mans.test b/tests/instmany-mans.test
index 773fa76..c01d0da 100755
--- a/tests/instmany-mans.test
+++ b/tests/instmany-mans.test
@@ -18,7 +18,6 @@
 
 # This is the mans sister test of instmany.test, see there for details.
 
-required=non-root    # hope to catch 'chmod a-r'-challenged file systems.
 . ./defs || Exit 1
 
 set -e
@@ -137,6 +136,7 @@ srcdir=../../$subdir
 
 for file in page3.1 page$nfiles.1 npage3.1 npage$nfiles.1; do
   chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || Exit 77
   $MAKE install-man1 && Exit 1
   chmod u+r $srcdir/$file
 done
diff --git a/tests/instmany-python.test b/tests/instmany-python.test
index 9f65237..1d0b91b 100755
--- a/tests/instmany-python.test
+++ b/tests/instmany-python.test
@@ -18,7 +18,7 @@
 
 # This is the python sister test of instmany.test, see there for details.
 
-required='non-root python'
+required='python'
 . ./defs || Exit 1
 
 set -e
@@ -123,6 +123,7 @@ srcdir=../../$subdir
 for file in python3.py python$nfiles.py
 do
   chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || Exit 77
   $MAKE install && Exit 1
   chmod u+r $srcdir/$file
 done
diff --git a/tests/instmany.test b/tests/instmany.test
index 31176d7..a1409dc 100755
--- a/tests/instmany.test
+++ b/tests/instmany.test
@@ -26,8 +26,6 @@
 # For texinfos, we expand names using $(srcdir) in the first place.
 # Let's hope nobody uses many texinfos.
 
-
-required=non-root    # hope to catch 'chmod a-r'-challenged file systems.
 . ./defs || Exit 1
 
 set -e
@@ -153,6 +151,7 @@ srcdir=../../$subdir
 for file in script3 script$nfiles
 do
   chmod a-r $srcdir/$file
+  test ! -r $srcdir/$file || Exit 77
   $MAKE install-binSCRIPTS && Exit 1
   chmod u+r $srcdir/$file
 done
diff --git a/tests/libtoo10.test b/tests/libtoo10.test
index ad245b0..78a4628 100755
--- a/tests/libtoo10.test
+++ b/tests/libtoo10.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2007  Free Software Foundation, Inc.
+# Copyright (C) 2007, 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
@@ -51,7 +51,8 @@ $ACLOCAL
 $AUTOMAKE --add-missing
 $AUTOCONF
 ./configure
-$MAKE all check clean
+$MAKE all check
+$MAKE clean
 test ! -d src/.libs
 test ! -d src/_libs
 test ! -d check/.libs
diff --git a/tests/lisp8.test b/tests/lisp8.test
index 578cd9c..3e4981c 100755
--- a/tests/lisp8.test
+++ b/tests/lisp8.test
@@ -39,7 +39,8 @@ $AUTOCONF
 $AUTOMAKE --add-missing
 ./configure
 
-$MAKE -j >stdout || { cat stdout; Exit 1; }
+: >stdout
+$MAKE -j >>stdout || { cat stdout; Exit 1; }
 
 cat stdout
 test 1 -eq `grep 'Warnings can be ignored' stdout | wc -l`
@@ -51,7 +52,8 @@ test -f elc-stamp
 
 rm -f am-*.elc
 
-$MAKE -j >stdout
+: >stdout
+$MAKE -j >>stdout
 
 cat stdout
 test 1 -eq `grep 'Warnings can be ignored' stdout | wc -l`
diff --git a/tests/nobase.test b/tests/nobase.test
index 7ffc489..3dbc2b1 100755
--- a/tests/nobase.test
+++ b/tests/nobase.test
@@ -1,6 +1,6 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007, 2008  Free Software
-# Foundation, Inc.
+# Copyright (C) 2001, 2002, 2004, 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
@@ -55,6 +55,7 @@ generated_files = sub/base-gen.h sub/nobase-gen.h 
sub/base-gen.dat \
 sub/nobase-gen.dat sub/base-gen.sh sub/nobase-gen.sh
 
 $(generated_files):
+       $(MKDIR_P) sub
        echo "generated file $@" > $@
 
 CLEANFILES = $(generated_files)
diff --git a/tests/parallel-tests.test b/tests/parallel-tests.test
new file mode 100755
index 0000000..c2ff258
--- /dev/null
+++ b/tests/parallel-tests.test
@@ -0,0 +1,158 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - VERBOSE
+# - clean
+# - TEST_SUITE_LOG
+# - dependencies between tests
+# - DISABLE_HARD_ERRORS
+# - TESTS
+# - TEST_LOGS
+# - RECHECK_LOGS
+
+. ./defs-p || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_SUITE_LOG = mylog.log
+TESTS = foo.test bar.test baz.test
+XFAIL_TESTS = bar.test
+foo.log: bar.log
+bar.log: baz.log
+END
+
+cat >>foo.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 0
+END
+cat >>bar.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 99
+END
+cat >>baz.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 1
+END
+chmod a+x foo.test bar.test baz.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+unset TESTS || :
+
+./configure
+# No hard errors: all tests should be run, there should be one failure.
+env DISABLE_HARD_ERRORS=yes $MAKE -e check >stdout && { cat stdout; Exit 1; }
+cat stdout
+test `grep -c '^FAIL' stdout` -eq 1
+test -f mylog.log
+test `grep -c '^FAIL' mylog.log` -eq 1
+test -f baz.log
+test -f bar.log
+test -f foo.log
+# The summary should be formatted correctly.
+grep 'failedn' stdout && Exit 1
+
+# clean should remove all log files (but not more).
+: > unrelated.log
+$MAKE clean
+test ! -f baz.log
+test ! -f bar.log
+test ! -f foo.log
+test ! -f mylog.log
+test -f unrelated.log
+
+$MAKE clean
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+# Now, there should be two errors: bar.test is a hard error.
+test `grep -c '^FAIL' stdout` -eq 2
+test `grep -c '^FAIL' mylog.log` -eq 2
+
+# Check dependencies: baz.test needs to run before bar.test,
+# but foo.test is not needed.
+# Note that this usage has a problem: the summary will only
+# take bar.log into account, because the $(TEST_SUITE_LOG) rule
+# does not "see" baz.log.  Hmm.
+$MAKE clean
+env TESTS='bar.test' $MAKE -e check && Exit 1
+test -f baz.log
+test -f bar.log
+test ! -f foo.log
+test -f mylog.log
+
+# Upon a lazy rerun, foo.test should be run, but the others shouldn't.
+# Note that the lazy rerun still exits with a failure, due to the previous
+# test failures.
+# Note that the previous test and this one taken together expose the timing
+# issue that requires the check-TESTS rule to always remove TEST_SUITE_LOG
+# before running the tests lazily.
+env RECHECK_LOGS= $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+test -f foo.log
+grep foo.test stdout
+grep bar.test stdout && Exit 1
+grep baz.test stdout && Exit 1
+grep '2.*tests.*failed' stdout
+
+# Now, explicitly retry with all test logs already updated, and ensure
+# that the summary is still displayed.
+env RECHECK_LOGS= $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep foo.test stdout && Exit 1
+grep bar.test stdout && Exit 1
+grep baz.test stdout && Exit 1
+grep '2.*tests.*failed' stdout
+
+# Lazily rerunning only foo should only rerun this one test.
+env RECHECK_LOGS=foo.log $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep foo.test stdout
+grep bar.test stdout && Exit 1
+grep baz.test stdout && Exit 1
+grep '2.*tests.*failed' stdout
+
+# Test VERBOSE.
+env VERBOSE=yes $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep 'this is.*bar.test' stdout
+grep 'this is.*baz.test' stdout
+
+$MAKE clean
+env TEST_LOGS=baz.log $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep foo.test stdout && Exit 1
+grep bar.test stdout && Exit 1
+grep baz.test stdout
+
+$MAKE clean
+env TESTS=baz.test $MAKE -e check > stdout && { cat stdout; Exit 1; }
+cat stdout
+grep foo.test stdout && Exit 1
+grep bar.test stdout && Exit 1
+grep baz.test stdout
+
+:
diff --git a/tests/parallel-tests2.test b/tests/parallel-tests2.test
new file mode 100755
index 0000000..2a5fc6f
--- /dev/null
+++ b/tests/parallel-tests2.test
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - check-html
+# - recheck-html
+
+required=rst2html
+. ./defs-p || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_SUITE_LOG = mylog.log
+TESTS = foo.test bar.test baz.test
+check_SCRIPTS = bla
+bla:
+       echo bla > $@
+CLEANFILES = bla
+END
+
+cat >>foo.test <<'END'
+#! /bin/sh
+echo "this is $0"
+test -f bla || exit 1
+exit 0
+END
+cat >>bar.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 99
+END
+cat >>baz.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 1
+END
+chmod a+x foo.test bar.test baz.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check-html >stdout && { cat stdout; Exit 1; }
+cat stdout
+test -f mylog.html
+
+# Always create the HTML output, even if there were no failures.
+rm -f mylog.html
+env TESTS=foo.test $MAKE -e check-html >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -f mylog.html
+
+# Create HTML output also with recheck-html
+rm -f mylog.html
+env TESTS=foo.test $MAKE -e recheck-html >stdout || { cat stdout; Exit 1; }
+cat stdout
+test -f mylog.html
+
+# check-html and recheck-html should cause check_SCRIPTS to be created,
+# and recheck-html should rerun no tests if check has not been run.
+$MAKE clean
+env TESTS=foo.test $MAKE -e check-html
+test -f bla
+$MAKE clean
+env TESTS=foo.test $MAKE -e recheck-html
+test -f bla
+test ! -f foo.log
+test -f mylog.html
+:
diff --git a/tests/parallel-tests3.test b/tests/parallel-tests3.test
new file mode 100755
index 0000000..776000e
--- /dev/null
+++ b/tests/parallel-tests3.test
@@ -0,0 +1,84 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - concurrent parallel execution
+
+required=GNUmake
+. ./defs-p || Exit 1
+
+# This test does not work well if $MAKE contains -j.
+case $MAKE in
+*\ -j*) Exit 77 ;;
+esac
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS =
+END
+
+for i in 1 2 3 4 5 6 7 8; do
+  echo "TESTS += foo$i.test" >> Makefile.am
+  cat >foo$i.test <<'END'
+#! /bin/sh
+echo "this is $0"
+# hack around maintainer-check check:
+sleep='sleep '1
+$sleep
+exit 0
+END
+  chmod a+x foo$i.test
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+unset TESTS || :
+
+for build in serial parallel; do
+  mkdir $build
+  cd $build
+  ../configure
+  $MAKE
+  cd ..
+done
+
+cd serial
+$MAKE -j1 check &
+cd ../parallel
+$sleep
+# Use append mode here to avoid dropping output.
+# Yes, this actually happens.
+: >stdout
+$MAKE -j4 check >> stdout
+cd ..
+kill $!
+cat parallel/stdout
+test `grep -c PASS parallel/stdout` -eq 8
+
+# Wait long enough so that there are no open files any more
+# when the post-test cleanup runs.
+$sleep
+$sleep
+$sleep
+$sleep
+:
diff --git a/tests/check5.test b/tests/parallel-tests4.test
similarity index 55%
copy from tests/check5.test
copy to tests/parallel-tests4.test
index 58c8607..ca3e18b 100755
--- a/tests/check5.test
+++ b/tests/parallel-tests4.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -14,10 +14,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test TESTS = $(check_PROGRAMS)
-
-. ./defs || Exit 1
+# Check parallel-tests features:
+# - suffix rules
 
+. ./defs-p || Exit 1
 set -e
 
 cat >> configure.in << 'END'
@@ -26,32 +26,45 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-check_PROGRAMS = one two
-TESTS = $(check_PROGRAMS)
-check-local:
-       test -f one$(EXEEXT)
-       test -f two$(EXEEXT)
-       touch ok
-print-tests:
-       echo BEG: $(TESTS) :END
+## Note that automake should not match the '/test' part
+## of 'sub/test' as '.test' suffix.
+TESTS = foo.chk bar.test $(check_PROGRAMS) sub/test
+check_PROGRAMS = baz bla.test bli.suff
+TEST_EXTENSIONS = .chk .test
+END
+
+mkdir sub
+
+cat >foo.chk << 'END'
+#! /bin/sh
+exit 0
 END
+chmod a+x foo.chk
+cp foo.chk bar.test
+cp foo.chk sub/test
+
+cat >baz.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+cp baz.c bla.c
+cp baz.c bli.c
 
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
 
-cat >one.c <<END
-int main() { return 0; }
-END
-cp one.c two.c
+unset TESTS || :
 
 ./configure
-unset TESTS || :
+$MAKE
 $MAKE check
-test -f ok
-EXEEXT=.bin $MAKE -e print-tests >output
-cat output
-# No am__EXEEXT_* variable is needed.
-grep '_EXEEXT' Makefile.in && Exit 1
-grep 'BEG: one.bin two.bin :END' output
-$FGREP 'TESTS = $(check_PROGRAMS)' Makefile.in
+test -f foo.log
+test -f bar.log
+test -f baz.log
+test -f bla.log
+test -f bli.suff.log
+test -f sub/test.log
+:
diff --git a/tests/maken2.test b/tests/parallel-tests5.test
similarity index 51%
copy from tests/maken2.test
copy to tests/parallel-tests5.test
index 4569375..f109cc2 100755
--- a/tests/maken2.test
+++ b/tests/parallel-tests5.test
@@ -14,50 +14,55 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Ensure that `make -n dist' and `make -n distcheck' show what would happen.
-# This currently works for GNU make only.
-
-# Please keep this test in sync with sister test maken.test.
+# Check parallel-tests features:
+# - concurrent program compilation and testing (with EXTRA_PROGRAMS)
+#
+# Actually, this test doesn't ensure that things happen concurrently.
+# It merely serves as demonstration.  :-)
 
 required=GNUmake
-. ./defs || Exit 1
+. ./defs-p || Exit 1
 
 set -e
 
-mkdir sub
-
 cat >> configure.in << 'END'
-AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
 AC_OUTPUT
 END
 
-cat > Makefile.am <<'END'
-SUBDIRS = sub
-distcheck-hook:
-       @: > stamp-distcheck-hook
-test-no-distdir:
-       test ! -d $(distdir)
-       test ! -f stamp-distcheck-hook
-       test ! -f sub/stamp-sub-dist-hook
+cat > Makefile.am << 'END'
+TESTS = $(programs) $(scripts)
+EXTRA_PROGRAMS = $(programs)
+CLEANFILES = $(EXTRA_PROGRAMS)
+dist_noinst_SCRIPTS = $(scripts)
+programs =
+scripts =
+END
+
+for i in 1 2 3 4 5 6 7 8; do
+  echo "scripts += foo$i.test" >> Makefile.am
+  echo "programs += foo$i.prog" >> Makefile.am
+  cat >foo$i.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 0
 END
-cat >sub/Makefile.am <<'END'
-dist-hook:
-       @: > stamp-sub-dist-hook
+  cat >foo$i.c <<'END'
+int main()
+{
+  return 0;
+}
 END
+  chmod a+x foo$i.test
+done
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
-./configure
+$AUTOMAKE -a
 
-$sleep
-echo stamp > stampfile
-$sleep
-for target in dist distcheck; do
-  $MAKE -n $target
-  $MAKE test-no-distdir
-  $MAKE -n $target | grep stamp-sub-dist-hook
-  test `ls -1t | sed 1q` = stampfile
-done
+unset TESTS || :
 
-Exit 0
+./configure
+$MAKE -j4 check
+$MAKE distcheck
+:
diff --git a/tests/amsubst.test b/tests/parallel-tests6.test
similarity index 70%
copy from tests/amsubst.test
copy to tests/parallel-tests6.test
index d696344..59a0b0e 100755
--- a/tests/amsubst.test
+++ b/tests/parallel-tests6.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 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
@@ -14,28 +14,30 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Check for _AM_SUBST_NOTMAKE.
-
-. ./defs || Exit 1
+# Check parallel-tests features:
+# - empty TESTS
+# BSD make will expand `$(TESTS:=.log)' to `.log' unless overridden.
 
+. ./defs-p || Exit 1
 set -e
 
 cat >> configure.in << 'END'
-AC_SUBST([backslash], "\\")
-_AM_SUBST_NOTMAKE([backslash])
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-test:
-       @echo $(backslash) @address@hidden
+TESTS =
 END
 
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE
+$AUTOMAKE -a
+
+unset TESTS || :
+
 ./configure
+$MAKE check >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '0 tests' stdout
 
-# If _AM_SUBST_NOTMAKE is not honored, the backslash
-# variable will not be empty.
-$MAKE test | grep '^[$]$'
+Exit 0
diff --git a/tests/parallel-tests7.test b/tests/parallel-tests7.test
new file mode 100755
index 0000000..ea9c2d4
--- /dev/null
+++ b/tests/parallel-tests7.test
@@ -0,0 +1,91 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - per-extension test drivers
+
+. ./defs-p || Exit 1
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+## Note that automake should not match the '/test' part
+## of 'sub/test' as '.test' suffix.
+TESTS = foo.chk bar.test $(check_PROGRAMS) sub/test
+check_PROGRAMS = baz bla.test bli.suff
+TEST_EXTENSIONS = .chk .test
+CHK_LOG_COMPILER = ./chk-driver
+TEST_LOG_COMPILER = ./test-driver
+LOG_COMPILER = ./noext-driver
+AM_CHK_LOG_FLAGS = 1
+CHK_LOG_FLAGS = 2
+AM_TEST_LOG_FLAGS = 3
+TEST_LOG_FLAGS = 4
+AM_LOG_FLAGS = 5
+LOG_FLAGS = 6
+END
+
+mkdir sub
+
+cat >chk-driver <<'END'
+#! /bin/sh
+echo $0 "$@"
+shift
+shift
+exec "$@"
+exit 127
+END
+chmod a+x chk-driver
+cp chk-driver test-driver
+cp chk-driver noext-driver
+
+cat >foo.chk << 'END'
+#! /bin/sh
+exit 0
+END
+chmod a+x foo.chk
+cp foo.chk bar.test
+cp foo.chk sub/test
+
+cat >baz.c << 'END'
+int main (void)
+{
+  return 0;
+}
+END
+cp baz.c bla.c
+cp baz.c bli.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+unset TESTS || :
+
+./configure
+$MAKE
+$MAKE check
+grep 'chk-driver  *1  *2' foo.log
+grep 'test-driver  *3  *4' bar.log
+grep 'noext-driver  *5  *6' baz.log
+grep 'test-driver  *3  *4' bla.log
+grep 'noext-driver  *5  *6' bli.suff.log
+grep 'noext-driver  *5  *6' sub/test.log
+:
diff --git a/tests/parallel-tests8.test b/tests/parallel-tests8.test
new file mode 100755
index 0000000..309a2cf
--- /dev/null
+++ b/tests/parallel-tests8.test
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - generated distributed tests.
+# - listing $(srcdir)/ or $(top_srcdir)/ in TESTS doesn't work ATM,
+#   and is thus diagnosed.
+
+# TODO: this test should also ensure that the `make' implementation
+#       properly adheres to rules in all cases.  See the Autoconf
+#       manual for the ugliness in this area, when VPATH comes into
+#       play.  :-/
+
+. ./defs-p || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TESTS = foo.test
+## the next line will cause automake to error out:
+TESTS += $(srcdir)/bar.test $(top_srcdir)/baz.test
+.in.test:
+       cp $< $@
+       chmod +x $@
+check_SCRIPTS = $(TESTS)
+EXTRA_DIST = foo.in foo.test
+DISTCLEANFILES = foo.test
+END
+
+cat >>foo.in <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 0
+END
+
+$ACLOCAL
+$AUTOCONF
+AUTOMAKE_fails -a
+grep '(srcdir.*bar' stderr
+grep 'top_srcdir.*baz' stderr
+
+sed '/srcdir/d' < Makefile.am > t
+mv -f t Makefile.am
+$AUTOMAKE -a
+
+./configure
+$MAKE check
+$MAKE distcheck
+$MAKE distclean
+
+mkdir build
+cd build
+../configure
+$MAKE check
+test ! -f ../foo.log
+$MAKE distcheck
+
+:
diff --git a/tests/parallel-tests9.test b/tests/parallel-tests9.test
new file mode 100755
index 0000000..e1f088b
--- /dev/null
+++ b/tests/parallel-tests9.test
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check parallel-tests features:
+# - recheck
+
+. ./defs-p || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+TEST_SUITE_LOG = mylog.log
+TESTS = foo.test bar.test baz.test
+check_SCRIPTS = bla
+CLEANFILES = bla
+bla:
+       echo bla > $@
+END
+
+cat >>foo.test <<'END'
+#! /bin/sh
+echo "this is $0"
+test -f bla || exit 1
+exit 0
+END
+cat >>bar.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 99
+END
+cat >>baz.test <<'END'
+#! /bin/sh
+echo "this is $0"
+exit 1
+END
+chmod a+x foo.test bar.test baz.test
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE check >stdout && { cat stdout; Exit 1; }
+cat stdout
+
+$MAKE recheck >stdout && { cat stdout; Exit 1; }
+cat stdout
+grep foo.test stdout && Exit 1
+grep bar.test stdout || Exit 1
+grep baz.test stdout || Exit 1
+
+# If we cannot read the log file, then redo it as well.
+chmod a-r foo.log
+if test ! -r foo.log; then
+   $MAKE recheck >stdout && { cat stdout; Exit 1; }
+   cat stdout
+   grep foo.test stdout || Exit 1
+fi
+
+# Ensure that recheck builds check_SCRIPTS, and that
+# recheck reruns nothing if check has not been run.
+$MAKE clean
+$MAKE recheck
+test -f bla
+test ! -f foo.log
+test ! -f bar.log
+test ! -f baz.log
+test -f mylog.log
+:
diff --git a/tests/pr300-ltlib.test b/tests/pr300-ltlib.test
index 99c03da..63078bb 100755
--- a/tests/pr300-ltlib.test
+++ b/tests/pr300-ltlib.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002, 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
@@ -48,7 +48,7 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --copy --add-missing
 ./configure --prefix "`pwd`/inst"
-$MAKE >stdout
+$MAKE V=1 >stdout
 cat stdout
 
 grep 'liba.la .*-rpath .*lib' stdout
diff --git a/tests/silent.test b/tests/silent.test
new file mode 100755
index 0000000..4eb11d5
--- /dev/null
+++ b/tests/silent.test
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, without libtool, standard depmode case.
+
+# Please keep this file in sync with silent2.test.
+
+. ./defs
+
+set -e
+
+mkdir sub
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo bar
+bar_CFLAGS = $(AM_CFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = baz bla
+bla_CFLAGS = $(AM_CFLAGS)
+EOF
+
+cat > foo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp foo.c bar.c
+cp foo.c sub/baz.c
+cp foo.c sub/bla.c
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout && Exit 1
+grep ' -o foo' stdout && Exit 1
+grep mv stdout && Exit 1
+grep 'CC .*foo\.' stdout
+grep 'CC .*bar\.' stdout
+grep 'CC .*baz\.' stdout
+grep 'CC .*bla\.' stdout
+grep 'CCLD .*foo' stdout
+grep 'CCLD .*bar' stdout
+grep 'CCLD .*baz' stdout
+grep 'CCLD .*bla' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o foo' stdout
+grep 'CC .*foo\.' stdout && Exit 1
+grep 'CC .*bar\.' stdout && Exit 1
+grep 'CC .*baz\.' stdout && Exit 1
+grep 'CC .*bla\.' stdout && Exit 1
+grep 'CCLD .*foo' stdout && Exit 1
+grep 'CCLD .*bar' stdout && Exit 1
+grep 'CCLD .*baz' stdout && Exit 1
+grep 'CCLD .*bla' stdout && Exit 1
+
+:
diff --git a/tests/silent2.test b/tests/silent2.test
new file mode 100755
index 0000000..a208151
--- /dev/null
+++ b/tests/silent2.test
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, without libtool, non-fastdep case
+# (so that, with GCC, we also cover the other code paths in depend2).
+
+# Please keep this file in sync with silent.test.
+
+required=gcc
+. ./defs
+
+set -e
+
+mkdir sub
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo bar
+bar_CFLAGS = $(AM_CFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = baz bla
+bla_CFLAGS = $(AM_CFLAGS)
+EOF
+
+cat > foo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp foo.c bar.c
+cp foo.c sub/baz.c
+cp foo.c sub/bla.c
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure am_cv_CC_dependencies_compiler_type=gcc --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout && Exit 1
+grep ' -o foo' stdout && Exit 1
+grep mv stdout && Exit 1
+grep 'CC .*foo\.' stdout
+grep 'CC .*bar\.' stdout
+grep 'CC .*baz\.' stdout
+grep 'CC .*bla\.' stdout
+grep 'CCLD .*foo' stdout
+grep 'CCLD .*bar' stdout
+grep 'CCLD .*baz' stdout
+grep 'CCLD .*bla' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o foo' stdout
+grep 'CC .*foo\.' stdout && Exit 1
+grep 'CC .*bar\.' stdout && Exit 1
+grep 'CC .*baz\.' stdout && Exit 1
+grep 'CC .*bla\.' stdout && Exit 1
+grep 'CCLD .*foo' stdout && Exit 1
+grep 'CCLD .*bar' stdout && Exit 1
+grep 'CCLD .*baz' stdout && Exit 1
+grep 'CCLD .*bla' stdout && Exit 1
+
+:
diff --git a/tests/silent3.test b/tests/silent3.test
new file mode 100755
index 0000000..c1266b7
--- /dev/null
+++ b/tests/silent3.test
@@ -0,0 +1,95 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with libtool, standard depmode case.
+
+# Please keep this file in sync with silent4.test.
+
+required=libtoolize
+. ./defs
+
+set -e
+
+mkdir sub
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+lib_LTLIBRARIES = libfoo.la libbar.la
+libbar_la_CFLAGS = $(AM_CFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+lib_LTLIBRARIES = libbaz.la libbla.la
+libbla_la_CFLAGS = $(AM_CFLAGS)
+EOF
+
+cat > libfoo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp libfoo.c libbar.c
+cp libfoo.c sub/libbaz.c
+cp libfoo.c sub/libbla.c
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout && Exit 1
+grep ' -o libfoo' stdout && Exit 1
+grep mv stdout && Exit 1
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep ' CC .*baz\.' stdout
+grep ' CC .*bla\.' stdout
+grep ' CCLD .*foo' stdout
+grep ' CCLD .*bar' stdout
+grep ' CCLD .*baz' stdout
+grep ' CCLD .*bla' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o libfoo' stdout
+grep ' CC .*foo\.' stdout && Exit 1
+grep ' CC .*bar\.' stdout && Exit 1
+grep ' CC .*baz\.' stdout && Exit 1
+grep ' CC .*bla\.' stdout && Exit 1
+grep ' CCLD .*foo' stdout && Exit 1
+grep ' CCLD .*bar' stdout && Exit 1
+grep ' CCLD .*baz' stdout && Exit 1
+grep ' CCLD .*bla' stdout && Exit 1
+
+:
diff --git a/tests/silent4.test b/tests/silent4.test
new file mode 100755
index 0000000..7f96f60
--- /dev/null
+++ b/tests/silent4.test
@@ -0,0 +1,98 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, with libtool, non-fastdep case
+# (so that, with GCC, we also cover the other code paths in depend2).
+
+# Please keep this file in sync with silent3.test.
+
+required="libtoolize gcc"
+. ./defs
+
+set -e
+
+mkdir sub
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_CONFIG_FILES([sub/Makefile])
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+lib_LTLIBRARIES = libfoo.la libbar.la
+libbar_la_CFLAGS = $(AM_CFLAGS)
+SUBDIRS = sub
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+lib_LTLIBRARIES = libbaz.la libbla.la
+libbla_la_CFLAGS = $(AM_CFLAGS)
+EOF
+
+cat > libfoo.c <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cp libfoo.c libbar.c
+cp libfoo.c sub/libbaz.c
+cp libfoo.c sub/libbla.c
+
+libtoolize
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure am_cv_CC_dependencies_compiler_type=gcc --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout && Exit 1
+grep ' -o libfoo' stdout && Exit 1
+grep mv stdout && Exit 1
+grep ' CC .*foo\.' stdout
+grep ' CC .*bar\.' stdout
+grep ' CC .*baz\.' stdout
+grep ' CC .*bla\.' stdout
+grep ' CCLD .*foo' stdout
+grep ' CCLD .*bar' stdout
+grep ' CCLD .*baz' stdout
+grep ' CCLD .*bla' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep ' -c' stdout
+grep ' -o libfoo' stdout
+grep ' CC .*foo\.' stdout && Exit 1
+grep ' CC .*bar\.' stdout && Exit 1
+grep ' CC .*baz\.' stdout && Exit 1
+grep ' CC .*bla\.' stdout && Exit 1
+grep ' CCLD .*foo' stdout && Exit 1
+grep ' CCLD .*bar' stdout && Exit 1
+grep ' CCLD .*baz' stdout && Exit 1
+grep ' CCLD .*bla' stdout && Exit 1
+
+$MAKE distclean
+
+:
diff --git a/tests/silent5.test b/tests/silent5.test
new file mode 100755
index 0000000..08c22d8
--- /dev/null
+++ b/tests/silent5.test
@@ -0,0 +1,162 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check silent-rules mode, languages other than C.
+
+required='g++ gfortran flex bison'
+. ./defs
+
+set -e
+
+mkdir sub
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AM_PROG_CC_C_O
+AC_PROG_CXX
+AC_PROG_F77
+AC_PROG_FC
+AC_PROG_LEX
+AC_PROG_YACC
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+# Need generic and non-generic rules.
+bin_PROGRAMS = foo bar
+bar_CFLAGS = $(AM_CFLAGS)
+foo_SOURCES = foo1.cpp foo2.f90 foo3.f foo5.l foo6.y
+SUBDIRS = sub
+AM_YFLAGS = -d
+LDADD = $(LEXLIB)
+BUILT_SOURCES = foo6.h
+EOF
+
+cat > sub/Makefile.am <<'EOF'
+AUTOMAKE_OPTIONS = subdir-objects
+# Need generic and non-generic rules.
+bin_PROGRAMS = baz bla
+bla_CFLAGS = $(AM_CFLAGS)
+baz_SOURCES = baz1.cpp baz2.f90 baz3.f baz5.l baz6.y
+AM_YFLAGS = -d
+LDADD = $(LEXLIB)
+BUILT_SOURCES = baz6.h
+EOF
+
+cat > foo1.cpp <<'EOF'
+int main ()
+{
+  return 0;
+}
+EOF
+cat > foo2.f90 <<'EOF'
+      subroutine foo2
+      return
+      end
+EOF
+cat > foo3.f <<'EOF'
+      subroutine foo3
+      return
+      end
+EOF
+cat > foo5.l <<'EOF'
+%%
+"END"   return EOF;
+.
+%%
+EOF
+cat > foo6.y <<'EOF'
+%{
+void yyerror (char *s) {}
+%}
+%token EOF
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' EOF {};
+EOF
+cp foo1.cpp bar.c
+cp foo1.cpp sub/baz.c
+cp foo1.cpp sub/bla.c
+cp foo1.cpp sub/baz1.cpp
+cp foo2.f90 sub/baz2.f90
+cp foo3.f sub/baz3.f
+cp foo5.l sub/baz5.l
+cp foo6.y sub/baz6.y
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# configure once for fastdep, once for non-fastdep
+for config_args in '' am_cv_CC_dependencies_compiler_type=gcc
+do
+  ./configure $config_args --enable-silent-rules
+  $MAKE >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep ' -c' stdout && Exit 1
+  grep ' -o ' stdout && Exit 1
+  grep mv stdout && Exit 1
+
+  grep 'CXX .*foo1\.' stdout
+  grep 'CXX .*baz1\.' stdout
+  grep 'FC .*foo2\.' stdout
+  grep 'FC .*baz2\.' stdout
+  grep 'F77 .*foo3\.' stdout
+  grep 'F77 .*baz3\.' stdout
+  grep 'LEX .*foo5\.' stdout
+  grep 'LEX .*baz5\.' stdout
+  grep ' CC .*foo5\.' stdout
+  grep ' CC .*baz5\.' stdout
+  grep 'YACC .*foo6\.' stdout
+  grep 'YACC .*baz6\.' stdout
+  grep ' CC .*foo6\.' stdout
+  grep ' CC .*baz6\.' stdout
+
+  grep 'CXXLD .*foo' stdout
+  grep 'CCLD .*bar' stdout
+  grep 'CXXLD .*baz' stdout
+  grep 'CCLD .*bla' stdout
+
+  $MAKE clean
+  $MAKE V=1 >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep ' -c' stdout
+  grep ' -o ' stdout
+
+  grep 'CXX .*foo1\.' stdout && Exit 1
+  grep 'CXX .*baz1\.' stdout && Exit 1
+  grep 'FC .*foo2\.' stdout && Exit 1
+  grep 'FC .*baz2\.' stdout && Exit 1
+  grep 'F77 .*foo3\.' stdout && Exit 1
+  grep 'F77 .*baz3\.' stdout && Exit 1
+  grep 'LEX .*foo5\.' stdout && Exit 1
+  grep 'LEX .*baz5\.' stdout && Exit 1
+  grep ' CC .*foo5\.' stdout && Exit 1
+  grep ' CC .*baz5\.' stdout && Exit 1
+  grep 'YACC .*foo6\.' stdout && Exit 1
+  grep 'YACC .*baz6\.' stdout && Exit 1
+  grep ' CC .*foo6\.' stdout && Exit 1
+  grep ' CC .*baz6\.' stdout && Exit 1
+
+  grep 'CXXLD .*foo' stdout && Exit 1
+  grep 'CCLD .*bar' stdout && Exit 1
+  grep 'CXXLD .*baz' stdout && Exit 1
+  grep 'CCLD .*bla' stdout && Exit 1
+  $MAKE clean
+  $MAKE maintainer-clean
+done
+
+:
diff --git a/tests/silent6.test b/tests/silent6.test
new file mode 100755
index 0000000..1f6a718
--- /dev/null
+++ b/tests/silent6.test
@@ -0,0 +1,103 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check user extensibility of silent-rules mode.
+
+. ./defs
+
+set -e
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+my_verbose = $(my_verbose_$(V))
+my_verbose_ = $(my_verbose_$(AM_DEFAULT_VERBOSITY))
+my_verbose_0 = @echo GEN $@;
+
+all-local: foo
+
+foo: foo.in
+       $(my_verbose)cp $(srcdir)/foo.in $@
+EXTRA_DIST = foo.in
+CLEANFILES = foo
+EOF
+
+: >foo.in
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN foo' stdout
+grep 'cp ' stdout && Exit 1
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN foo' stdout && Exit 1
+grep 'cp ' stdout
+
+$MAKE distclean
+
+./configure --disable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN foo' stdout && Exit 1
+grep 'cp ' stdout
+
+$MAKE distclean
+
+$sleep
+# Things should also work with -Wall in AM_INIT_AUTOMAKE.
+cat > configure.in <<'END'
+AC_INIT([silent6], [1.0])
+AM_INIT_AUTOMAKE([-Wall])
+AC_CONFIG_FILES([Makefile])
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+$AUTOMAKE -Wno-error
+
+# AM_SILENT_RULES should turn off the warning
+$sleep
+echo 'AM_SILENT_RULES' >> configure.in
+$ACLOCAL
+$AUTOMAKE
+grep 'AM_V_GEN' Makefile.in
+$AUTOMAKE --force -Wno-all -Wportability
+grep 'AM_V_GEN' Makefile.in
+
+# The `silent-rules' option to AM_INIT_AUTOMAKE should work likewise.
+$sleep
+cat > configure.in <<'END'
+AC_INIT([silent6], [1.0])
+AM_INIT_AUTOMAKE([silent-rules])
+AC_CONFIG_FILES([Makefile])
+END
+$ACLOCAL
+$AUTOMAKE
+grep 'AM_V_GEN' Makefile.in
+$AUTOMAKE --force -Wno-all -Wportability
+grep 'AM_V_GEN' Makefile.in
+
+:
diff --git a/tests/silent7.test b/tests/silent7.test
new file mode 100755
index 0000000..cca2644
--- /dev/null
+++ b/tests/silent7.test
@@ -0,0 +1,95 @@
+#!/bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check user extensibility of silent-rules mode.
+
+. ./defs
+
+set -e
+
+cat >>configure.in <<'EOF'
+AM_SILENT_RULES
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'EOF'
+all-local: foo
+
+## And here's how you should do it in your own code:
+foo: foo.in
+       $(AM_V_GEN)cp $(srcdir)/foo.in $@
+       $(AM_V_at)echo more >> $@
+
+EXTRA_DIST = foo.in
+CLEANFILES = foo
+EOF
+
+: >foo.in
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure --disable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout && Exit 1
+grep 'cp ' stdout
+grep 'echo ' stdout
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout && Exit 1
+grep 'cp ' stdout
+grep 'echo ' stdout
+
+$MAKE clean
+$MAKE V=0 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout
+grep 'cp ' stdout && Exit 1
+grep 'echo ' stdout && Exit 1
+
+
+$MAKE distclean
+
+./configure --enable-silent-rules
+$MAKE >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout
+grep 'cp ' stdout && Exit 1
+grep 'echo ' stdout && Exit 1
+
+$MAKE clean
+$MAKE V=0 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout
+grep 'cp ' stdout && Exit 1
+grep 'echo ' stdout && Exit 1
+
+$MAKE clean
+$MAKE V=1 >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep 'GEN.*foo' stdout && Exit 1
+grep 'cp ' stdout
+grep 'echo ' stdout
+
+# Ensure that setting `silent-rules' in a Makefile.am produces an error.
+echo 'AUTOMAKE_OPTIONS = silent-rules' >> Makefile.am
+AUTOMAKE_fails --force
+
+:
diff --git a/tests/suffix13.test b/tests/suffix13.test
new file mode 100755
index 0000000..df5f4d5
--- /dev/null
+++ b/tests/suffix13.test
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2002, 2003, 2006, 2009  Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Tests that Automake understands suffix rules with renamed objects
+# and subdir objects.
+# Reported by Florian Briegel.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in <<EOF
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+EOF
+
+cat >Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+SUFFIXES = .baz .c
+.baz.c:
+       case $@ in sub/*) $(MKDIR_P) sub;; *) :;; esac
+       cp $< $@
+
+DISTCLEANFILES = sub/bar.c
+
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c sub/bar.baz
+foo_CFLAGS =
+END
+
+mkdir sub
+cat > sub/bar.baz <<'END'
+extern int foo ();
+int main () { return foo (); }
+END
+cat > foo.c <<'END'
+int foo () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE
+
+$MAKE distcheck
+$MAKE distclean
+
+# Should also work without subdir-objects
+
+sed '/subdir-objects/d' < Makefile.am > t
+mv -f t Makefile.am
+$AUTOMAKE --force
+./configure
+$MAKE
+$MAKE distcheck
+:
diff --git a/tests/txinfo18.test b/tests/txinfo18.test
index f847b63..bc66918 100755
--- a/tests/txinfo18.test
+++ b/tests/txinfo18.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002, 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
@@ -62,4 +62,4 @@ $AUTOMAKE --add-missing
 $AUTOCONF
 
 ./configure
-$MAKE distcheck
+TAR_OPTIONS= $MAKE distcheck
diff --git a/tests/txinfo33.test b/tests/txinfo33.test
new file mode 100755
index 0000000..38adb1e
--- /dev/null
+++ b/tests/txinfo33.test
@@ -0,0 +1,128 @@
+#! /bin/sh
+# Copyright (C) 2003, 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
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# DVIS, PDFS, PSS, HTMLS should not be cleaned upon `mostlyclean'.
+# Similar to txinfo25.test.
+
+required='makeinfo tex texi2dvi-o dvips'
+. ./defs || Exit 1
+
+set -e
+
+mkdir sub
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+info_TEXINFOS = main.texi other.texi sub/another.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
address@hidden main.info
address@hidden main
address@hidden Top
+Hello walls.
address@hidden version.texi
address@hidden
+END
+
+cat > other.texi << 'END'
+\input texinfo
address@hidden other.info
address@hidden other
address@hidden Top
+Hello walls.
address@hidden version2.texi
address@hidden
+END
+
+cat > sub/another.texi << 'END'
+\input texinfo
address@hidden another.info
address@hidden another
address@hidden Top
+Hello walls.
address@hidden version3.texi
address@hidden
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+# In-tree build.
+./configure
+$MAKE dvi ps pdf html
+
+test -f main.dvi
+test -f main.ps
+test -f main.html || test -d main.html
+test -f main.pdf
+test -f other.pdf
+test -f sub/another.pdf
+
+test -f other.dvi
+test -f other.html || test -d other.html
+test -f other.ps
+test -f sub/another.dvi
+test -f sub/another.html || test -d sub/another.html
+test -f sub/another.ps
+
+$MAKE mostlyclean
+
+ls *.aux && Exit 1
+ls sub/*.aux && Exit 1
+
+test -f main.dvi
+test -f main.ps
+test -f main.html || test -d main.html
+test -f main.pdf
+test -f other.pdf
+test -f sub/another.pdf
+
+test -f other.dvi
+test -f other.html || test -d other.html
+test -f other.ps
+test -f sub/another.dvi
+test -f sub/another.html || test -d sub/another.html
+test -f sub/another.ps
+
+$MAKE clean
+
+test ! -f main.dvi
+test ! -f main.ps
+test ! -f main.html && test ! -d main.html
+test ! -f main.pdf
+test ! -f other.pdf
+test ! -f sub/another.pdf
+test ! -f sub/yetanother.pdf
+
+test ! -f other.dvi
+test ! -f other.html && test ! -d other.html
+test ! -f other.ps
+test ! -f sub/another.dvi
+test ! -f sub/another.html && test ! -d sub/another.html
+test ! -f sub/another.ps
+
+./configure
+$MAKE
+
+$MAKE distcheck
+
+:
diff --git a/tests/extra8.test b/tests/vala.test
similarity index 52%
copy from tests/extra8.test
copy to tests/vala.test
index 02272d4..a0e97ad 100755
--- a/tests/extra8.test
+++ b/tests/vala.test
@@ -1,5 +1,6 @@
-#!/bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
+#! /bin/sh
+# Copyright (C) 1996, 2001, 2002, 2006, 2008, 2009
+# Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -18,25 +19,41 @@
 # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 # Boston, MA 02110-1301, USA.
 
-# Ensure defining bin_PROGRAMS in terms of EXTRA_PROGRAMS works,
-# and that referring to the same program with inconsistent addition
-# of $(EXEEXT) works, too.
+# Test to make sure intermediate .c files are built from vala source.
 
+required="libtool"
 . ./defs || Exit 1
 
 set -e
 
-cat >>configure.in <<'END'
+cat >> 'configure.in' << 'END'
 AC_PROG_CC
+AC_PROG_LIBTOOL
+AM_PROG_VALAC
 AC_OUTPUT
 END
-cat >Makefile.am <<'END'
-EXTRA_PROGRAMS = foo bar
-bin_PROGRAMS = $(EXTRA_PROGRAMS) baz
-noinst_PROGRAMS = baz$(EXEEXT)
+
+cat > 'Makefile.am' <<'END'
+bin_PROGRAMS = zardoz
+zardoz_SOURCES = zardoz.vala
+zardoz_VALAFLAGS = --debug
+
+lib_LTLIBRARIES = libzardoz.la
+libzardoz_la_SOURCES = zardoz-foo.vala zardoz-bar.vala
 END
 
+: > ltmain.sh
+: > config.sub
+: > config.guess
+
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -a
+
+grep 'VALAC' Makefile.in
+grep 'am_zardoz_OBJECTS' Makefile.in
+grep 'am_libzardoz_la_OBJECTS' Makefile.in
+grep 'zardoz_vala.stamp' Makefile.in
+grep 'libzardoz_la_vala.stamp' Makefile.in
+grep 'zardoz\.c' Makefile.in
+grep 'zardoz-foo\.c' Makefile.in
 
-:
diff --git a/tests/extra8.test b/tests/vala1.test
similarity index 50%
copy from tests/extra8.test
copy to tests/vala1.test
index 02272d4..158adcf 100755
--- a/tests/extra8.test
+++ b/tests/vala1.test
@@ -1,5 +1,6 @@
-#!/bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
+#! /bin/sh
+# Copyright (C) 1996, 2001, 2002, 2006, 2008, 2009
+# Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -18,25 +19,40 @@
 # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 # Boston, MA 02110-1301, USA.
 
-# Ensure defining bin_PROGRAMS in terms of EXTRA_PROGRAMS works,
-# and that referring to the same program with inconsistent addition
-# of $(EXEEXT) works, too.
+# Test to make sure intermediate .c files are built from vala sources
+# in non-recursive automake mode.
 
+required="libtool"
 . ./defs || Exit 1
 
 set -e
 
-cat >>configure.in <<'END'
+cat >> 'configure.in' << 'END'
 AC_PROG_CC
+AC_PROG_LIBTOOL
+AM_PROG_VALAC
 AC_OUTPUT
 END
-cat >Makefile.am <<'END'
-EXTRA_PROGRAMS = foo bar
-bin_PROGRAMS = $(EXTRA_PROGRAMS) baz
-noinst_PROGRAMS = baz$(EXEEXT)
+
+cat > 'Makefile.am' <<'END'
+bin_PROGRAMS = src/zardoz
+src_zardoz_SOURCES = src/zardoz.vala
+
+lib_LTLIBRARIES = src/libzardoz.la
+src_libzardoz_la_SOURCES = src/zardoz-foo.vala src/zardoz-bar.vala
 END
 
+: > ltmain.sh
+: > config.sub
+: > config.guess
+
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -a
 
-:
+grep 'VALAC' Makefile.in
+grep 'src_zardoz_OBJECTS' Makefile.in
+grep 'src_libzardoz_la_OBJECTS' Makefile.in
+grep 'src_zardoz_vala.stamp' Makefile.in
+grep 'src_libzardoz_la_vala.stamp' Makefile.in
+grep 'zardoz\.c' Makefile.in
+grep 'src/zardoz-foo\.c' Makefile.in
diff --git a/tests/vala2.test b/tests/vala2.test
new file mode 100755
index 0000000..6209aa6
--- /dev/null
+++ b/tests/vala2.test
@@ -0,0 +1,77 @@
+#! /bin/sh
+# Copyright (C) 1996, 2001, 2002, 2006, 2008, 2009
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Test to make sure compiling Vala code really works with recursive make.
+
+required="libtool libtoolize pkg-config valac gcc"
+. ./defs || Exit 1
+
+set -e
+
+mkdir src
+
+cat >> 'configure.in' << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AM_PROG_VALAC
+PKG_CHECK_MODULES([GOBJECT],[gobject-2.0 >= 2.10])
+AC_CONFIG_FILES([src/Makefile])
+AC_OUTPUT
+END
+
+cat > 'Makefile.am' <<'END'
+SUBDIRS = src
+END
+
+cat > 'src/Makefile.am' <<'END'
+bin_PROGRAMS = zardoz
+zardoz_CFLAGS = $(GOBJECT_CFLAGS)
+zardoz_LDADD = $(GOBJECT_LIBS)
+zardoz_SOURCES = zardoz.vala
+END
+
+cat > 'src/zardoz.vala' <<'END'
+using GLib;
+
+public class Zardoz {
+  public static void main () {
+    stdout.printf ("Zardoz!\n");
+  }
+}
+END
+
+libtoolize
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+$MAKE distcheck
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE distcheck
+
diff --git a/tests/vala3.test b/tests/vala3.test
new file mode 100755
index 0000000..7815393
--- /dev/null
+++ b/tests/vala3.test
@@ -0,0 +1,103 @@
+#! /bin/sh
+# Copyright (C) 1996, 2001, 2002, 2006, 2008, 2009
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Test to make sure compiling Vala code really works with non-recursive make.
+
+required="libtool libtoolize pkg-config valac gcc"
+. ./defs || Exit 1
+
+set -e
+
+mkdir src
+
+cat >> 'configure.in' << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AM_PROG_VALAC([0.7.0])
+PKG_CHECK_MODULES([GOBJECT],[gobject-2.0 >= 2.10])
+AC_OUTPUT
+END
+
+cat > 'src/zardoz.vala' <<'END'
+using GLib;
+
+public class Zardoz {
+  public static void main () {
+    stdout.printf ("Zardoz!\n");
+  }
+}
+END
+
+cat > 'Makefile.am' <<'END'
+bin_PROGRAMS = src/zardoz
+src_zardoz_CFLAGS = $(GOBJECT_CFLAGS)
+src_zardoz_LDADD = $(GOBJECT_LIBS)
+src_zardoz_SOURCES = src/zardoz.vala
+END
+
+libtoolize
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure || Exit 77
+$MAKE
+$MAKE distcheck
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE distcheck
+
+cd ..
+rm -rf build
+
+# Try again with subdir-objects.
+
+cat > 'Makefile.am' <<'END'
+AUTOMAKE_OPTIONS = subdir-objects
+
+bin_PROGRAMS = src/zardoz
+src_zardoz_CFLAGS = $(GOBJECT_CFLAGS)
+src_zardoz_LDADD = $(GOBJECT_LIBS)
+src_zardoz_SOURCES = src/zardoz.vala
+END
+
+libtoolize
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure || Exit 77
+$MAKE
+$MAKE distcheck
+$MAKE distclean
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE distcheck
+
+
diff --git a/tests/extra8.test b/tests/vala4.test
similarity index 55%
copy from tests/extra8.test
copy to tests/vala4.test
index 02272d4..1f9d2ca 100755
--- a/tests/extra8.test
+++ b/tests/vala4.test
@@ -1,5 +1,5 @@
-#!/bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
+#! /bin/sh
+# Copyright (C) 2008, 2009  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -18,25 +18,44 @@
 # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 # Boston, MA 02110-1301, USA.
 
-# Ensure defining bin_PROGRAMS in terms of EXTRA_PROGRAMS works,
-# and that referring to the same program with inconsistent addition
-# of $(EXEEXT) works, too.
+# Test AM_PROG_VALAC.
 
+required=libtoolize
 . ./defs || Exit 1
 
 set -e
 
-cat >>configure.in <<'END'
+cat >> configure.in << 'END'
 AC_PROG_CC
+AC_PROG_LIBTOOL
+AM_PROG_VALAC([0.0.1])
 AC_OUTPUT
 END
-cat >Makefile.am <<'END'
-EXTRA_PROGRAMS = foo bar
-bin_PROGRAMS = $(EXTRA_PROGRAMS) baz
-noinst_PROGRAMS = baz$(EXEEXT)
+
+: > Makefile.am
+
+cat > valac << 'END'
+#! /bin/sh
+if test "x$1" = x--version; then
+  echo 1.2.3
+fi
+exit 0
 END
+chmod +x valac
 
+libtoolize
 $ACLOCAL
-$AUTOMAKE
+$AUTOMAKE -a
+$AUTOCONF
+./configure "VALAC=`pwd`/valac"
+
+sed 's/AM_PROG_VALAC.*/AM_PROG_VALAC([9999.9])/' < configure.in >t
+mv -f t configure.in
+$AUTOCONF --force
+./configure "VALAC=`pwd`/valac" && Exit 1
 
+sed 's/AM_PROG_VALAC.*/AM_PROG_VALAC([1.2.3])/' < configure.in >t
+mv -f t configure.in
+$AUTOCONF --force
+./configure "VALAC=`pwd`/valac"
 :
diff --git a/tests/vala5.test b/tests/vala5.test
new file mode 100755
index 0000000..7369186
--- /dev/null
+++ b/tests/vala5.test
@@ -0,0 +1,74 @@
+#! /bin/sh
+# Copyright (C) 1996, 2001, 2002, 2006, 2008, 2009
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Test per-target flags, expected to fail.
+
+required="libtool libtoolize pkg-config valac gcc"
+. ./defs || Exit 1
+
+set -e
+
+mkdir src
+
+cat >> 'configure.in' << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AM_PROG_VALAC
+PKG_CHECK_MODULES([GOBJECT],[gobject-2.0 >= 2.10])
+AC_CONFIG_FILES([src/Makefile])
+AC_OUTPUT
+END
+
+cat > 'Makefile.am' <<'END'
+SUBDIRS = src
+END
+
+cat > 'src/Makefile.am' <<'END'
+bin_PROGRAMS = foo bar
+foo_CFLAGS = $(GOBJECT_CFLAGS)
+foo_LDADD = $(GOBJECT_LIBS)
+foo_SOURCES = baz.vala
+bar_SOURCES = baz.vala
+bar_VALAFLAGS = -D BAR
+bar_CFLAGS = $(GOBJECT_CFLAGS)
+bar_LDADD = $(GOBJECT_LIBS)
+END
+
+cat > 'src/baz.vala' <<'END'
+void main () {
+#if BAR
+  stdout.printf ("bar\n");
+#else
+  stdout.printf ("foo\n");
+#endif
+}
+END
+
+libtoolize
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+


hooks/post-receive
--
GNU Automake




reply via email to

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